Python中按值来获取指定的键

Python字典中的键是唯一的,但不同的键可以对应同样的值,比如说uid,可以是1001。id同样可以是1001。这样的话通过值来获取指定的键,就不止一个!而且也并不太好处理。这里同样提供两种思路来处理。

方法一:

>>> dct = {'Name': 'Alice', 'Age': 18, 'uid': 1001, 'id': 1001}
>>> def get_key1(dct, value):
...   return list(filter(lambda k:dct[k] == value, dct))
>>> get_key1(dct, 1001)
['id', 'uid']

方法二:

>>> dct = {'Name': 'Alice', 'Age': 18, 'uid': 1001, 'id': 1001}
>>> def get_key2(dct, value):
...   return [k for (k,v) in dct.items() if v == value]
>>> get_key2(dct, 1001)
['id', 'uid']
>>> get_key2(dct, 1000)
[]

上面的两种方法可以很方便高效的来处理字典中按值来找键的问题!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • Python中最大递归深度值的探讨

    Python对递归函数设置是有默认值. 可以通过下面命令来查看设置的默认值 >>> import sys >>> sys.getrecursionlimit() 3000 查看该函数的帮助文件就更清晰了: >>> help(sys.getrecursionlimit) Help on built-in function getrecursionlimit in module sys: getrecursionlimit(...) getrecursio

  • Python按钮的响应事件详解

    import sys from PyQt5 import QtWidgets from PyQt5.QtWidgets import QMainWindow from test import Ui_MainWindow from PyQt5.QtWidgets import QFileDialog class MyPyQT_Form(QMainWindow, Ui_MainWindow): def __init__(self): super(MyPyQT_Form, self).__init__

  • 用Python写一个模拟qq聊天小程序的代码实例

    Python 超简单的聊天程序 客户端: import socket, sys host = '10.248.27.23' # host = raw_input("Plz imput destination IP:") # data = raw_input("Plz imput what you want to submit:") port = 51423 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) tr

  • Python中三元表达式的几种写法介绍

    要介绍Python的三元表达式,可以先看看其他编程语言比如C,JAVA中应用: public class java { public static void main(String[] args){ int x = 100; int y = 101; int MAX = (x > y)? x: y; System.out.println("MAX:" + MAX); } } 上面的例子可以很好的说明了其他语言的格式: 判段的条件 ? 条件为真时的结果:条件为假时的结果 而在Pyt

  • Python字符串通过'+'和join函数拼接新字符串的性能测试比较

    有一道Python面试题, 以下代码有什么局限性,要如何修改 def strTest(num): s = 'Hello' for i in range(num): s += 'x' return s 上面的代码其实可以看出:由于变量str是不变对象,每次遍历,Python都会生成新的str对象来存储新的字符串,所以num越大,创建的str对象就越多,内存消耗约大,速度越慢,性能越差. 如果要改变上面的问题,可以变字符串拼接为join联合的方式,代码如下: def strTest2(num): s

  • Python之lambda匿名函数及map和filter的用法

    现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}] t1 = (('a'), ('c')) t2 = (('b'), ('d')) print(list(map(lambda t: {t[0]: t[1]}, zip(t1, t2)))) l = lambda t1, t2: [{i: j} for i, j in zip(t1, t2)] print(l(t1, t2)) map内置函数使用: ma

  • Python小进度条显示代码

    有的时候程序需要有进度条显示,比如说安装程序.下载文件等场合. 下面有一段小程序可达到效果 程序代码 import time for i in range(0, 101, 2): time.sleep(0.3) num = i // 2 if i == 100: process = "\r[%3s%%]: |%-50s|\n" % (i, '|' * num) else: process = "\r[%3s%%]: |%-50s|" % (i, '|' * num)

  • Python两个字典键同值相加的几种方法

    两个字典A = {'a': 1, 'b': 2, 'c': 3}, B = {'b': 4, 'c': 6, 'd': 8} 要合并这两个字典,键值同则相加. 两个字典如果不考虑键相同则相加的话,可以使用d1.update(d2)可以很方便合并,但这样的后面的字典到中的值会覆盖字典d1中的值. >>> A = {'a': 1, 'b': 2} >>> B = {'a': 8, 'c': 3} >>> A.update(B) >>> A

  • Python中一般处理中文的几种方法

    Python中的中文是个很头痛的问题,Python2和Python3都会出现,而且py2中出现的概率要大些. 有一道面试题: Python中如何处理中文问题,能想到的就是以下几方面来规避: 1. 首行添加 # coding = utf-8 # coding = utf-8 # 或者 # -*- coding:utf-8 -*- 2. 字符串前添加u >>> s = u'中文' >>> print(s) 中文 3. 添加以下代码 import sys reload(sys

  • Python去除字符串前后空格的几种方法

    其实如果要去除字符串前后的空格很简单,那就是用strip(),简单方便 >>> ' A BC '.strip() 'A BC' 如果不允许用strip()的方法,也是可以用正则匹配的方法来处理. >>> s1 = ' A BC' >>> s2 = 'A BC ' >>> s3 = ' A BC ' >>> s4 = 'A BC' >>> def trim(s): ... import re ...

随机推荐