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) []
上面的两种方法可以很方便高效的来处理字典中按值来找键的问题!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
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的三元表达式,可以先看看其他编程语言比如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小进度条显示代码
有的时候程序需要有进度条显示,比如说安装程序.下载文件等场合. 下面有一段小程序可达到效果 程序代码 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按钮的响应事件详解
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中最大递归深度值的探讨
Python对递归函数设置是有默认值. 可以通过下面命令来查看设置的默认值 >>> import sys >>> sys.getrecursionlimit() 3000 查看该函数的帮助文件就更清晰了: >>> help(sys.getrecursionlimit) Help on built-in function getrecursionlimit in module sys: getrecursionlimit(...) getrecursio
-
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写一个模拟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去除字符串前后空格的几种方法
其实如果要去除字符串前后的空格很简单,那就是用strip(),简单方便 >>> ' A BC '.strip() 'A BC' 如果不允许用strip()的方法,也是可以用正则匹配的方法来处理. >>> s1 = ' A BC' >>> s2 = 'A BC ' >>> s3 = ' A BC ' >>> s4 = 'A BC' >>> def trim(s): ... import re ...
-
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字符串通过'+'和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
随机推荐
- iOS利用MJRefresh实现自定义刷新动画效果
- Android RecyclerView设置下拉刷新的实现方法
- c# 中文转拼音without CJK
- Android的TextView与Html相结合的具体方法
- Javascript操作URL函数修改版
- 让手机访问WAP网站服务器 IIS WAP服务器的MIME类型设置
- VBScript 打造自己的远程CMDShell附使用教程
- SQL事务用法begin tran,commit tran和rollback tran的用法
- 图片展示效果 鼠标经过变大图,支持FF
- SWFUpload多文件上传及文件个数限制的方法
- UNIX下的PHP环境配置,+apache
- Android编程获取图片和视频缩略图的方法
- C/C++指针小结
- MySql游标的使用实例
- Android调用默认浏览器打开指定Url的方法实例
- Android中TimePicker与DatePicker时间日期选择组件的使用实例
- 在Pycharm中设置默认自动换行的方法
- PHP实现获取url地址中顶级域名的方法示例
- php实现微信公众号创建自定义菜单功能的实例代码
- centos7之Python3.74安装教程