python 字典使用
整理很好的文章
文章复制链接:
https://mp.weixin.qq.com/s/Aj65A-uuTaARW3vvYTxvzQ
1、检查键是否存在于字典中
def key_in_dict(d, key):
return key in d
d = {'Bob': 1, 'Mary': 2, 'Lisa': 4, 'Ken': 5}
print(key_in_dict(d, 'Hello'))
print(key_in_dict(d, 'Lisa'))
输出:
False
True
2、获取字典中所有值组成的列表
这里需要使用 dict.values() 获取字典中的所有值,然后通过 list() 转换为列表。
def values_only(d):
return list(d.values())
d = {'Bob': 1, 'Mary': 2, 'Lisa': 4, 'Ken': 5}
print(values_only(d))
输出:
[1, 4, 2, 5]
3、获取字典中所有键组成的列表
这里需要使用 dict.keys() 获取字典中的所有键,然后通过 list() 转换为列表。
def keys_only(d):
return list(d.keys())
d = {'Bob': 1, 'Mary': 2, 'Lisa': 4, 'Ken': 5}
print(keys_only(d))
输出:
['Lisa', 'Mary', 'Ken', 'Bob']
4、将字典所有键值对转换为元组列表
这里需要使用 dict.items() 获取字典中的所有键值对,然后通过 list() 转换为元祖列表。
def dict_to_list(d):
return list(d.items())
d = {'Bob': 1, 'Mary': 2, 'Lisa': 4, 'Ken': 5}
print(dict_to_list(d))
输出:
[('Ken', 5), ('Lisa', 4), ('Bob', 1), ('Mary', 2)]
5、将字典中的键值进行互换
这里仍然需要借助 dict.items() 分别获取字典的键和值,互换位置,来创建一个新字典。
def invert_dictionary(d):
return { value: key for key, value in d.items() }
d = {'Bob': 1, 'Mary': 2, 'Lisa': 4, 'Ken': 5}
print(invert_dictionary(d))
输出:
{1: 'Bob', 2: 'Mary', 4: 'Lisa', 5: 'Ken'}
6、使用 dict.get(key),而不是 dict[key]
通过键获取对应的值,dict[key] 是最常用的方法,但是如果 key 不存在,则会引发 KeyError 错误。
那么你可以使用 dict.get(key) 来规避这个问题,dict.get() 可以接受第二个参数,表示该键对应的默认值,当 key 不存在时,就返回该默认值。
d = {'Bob': 1, 'Mary': 2, 'Lisa': 4, 'Ken': 5}
print(d.get('Mary'))
print(d.get('mary', 2))
print(d['mary']) # KeyError
输出:
2
2
7、将字典列表转换为指定键对应的值列表
如果你有多个字典,且字典的键都相同,则可以根据指定键,获取每个字典该键的值组成的列表。
需要使用到 dict.get() 来得到键对应的值。
def get_values_by_key(dicts, key):
return [x.get(key) for x in dicts]
students = [
{ 'name': 'Bob', 'id': 10 },
{ 'name': 'Mary', 'id': 20 },
{ 'name': 'Lisa', 'id': 30 },
{ 'name': 'Ken', 'id': 40 }
]
print(get_values_by_key(students, 'name'))
print(get_values_by_key(students, 'id'))
输出:
['Bob', 'Mary', 'Lisa', 'Ken']
[10, 20, 30, 40]
8、查找字典中最小值对应的键
使用 min() 函数,同时设置参数 key 为 dict.get()。同理,要获取最大值,则使用 max()。
def key_of_min(d):
return min(d, key = d.get)
d = {'Bob': 1, 'Mary': 2, 'Lisa': 4, 'Ken': 5}
print(key_of_min(d))
输出:
Bob
9、合并多个字典
创建一个新字典,并使用 dict.update() 将传入的每个字典添加到新字典中。
def merge_dicts(*dicts):
res = dict()
for d in dicts:
res.update(d)
return res
stud1 = {'Bob': 1, 'Mary': 2}
stud2 = {'Lisa': 4, 'Ken': 5}
stud3 = {'Vivi': 7}
print(merge_dicts(stud1, stud2, stud3))
输出:
{'Lisa': 4, 'Vivi': 7, 'Mary': 2, 'Ken': 5, 'Bob': 1}
10、根据值查找对应的键
使用 dict.items() 和 next() 找到字典中具有给定值的第一个键。
如果想找到字典中具有给定值的所有键,则将 next() 更改为 list()。
def find_key(d, val):
return next(key for key, value in d.items() if value == val)
d = {'Bob': 1, 'Mary': 2, 'Lisa': 4, 'Ken': 5, 'Vivi': 2}
print(find_key(d, 2))
输出:
Mary
11、将两个列表组合为一个字典
这里有两个列表,第一个列表存放键,第二个列表存放值,要将这两个列表转换为一个字典。
def lists_to_dict(keys, values):
return dict(zip(keys, values))
names = ['Bob', 'Mary', 'Lisa', 'Ken']
ids = [1, 2, 4, 5]
print(lists_to_dict(names, ids))
输出:
{'Ken': 5, 'Lisa': 4, 'Bob': 1, 'Mary': 2}
12、根据给定的函数对列表中的元素进行分组
对列表中的每个元素执行相同的操作,并根据结果对元素进行分组。
需要使用 collections.defaultdict 初始化一个特殊字典,其中的值都是列表。
下面例子是根据每个名字的长度进行分组。
from collections import defaultdict
def group_by(items, fn):
d = defaultdict(list)
for el in items:
d[fn(el)].append(el)
return dict(d)
print(group_by(['Bob', 'Mary', 'Lisa'], len))
输出:
{3: ['Bob'], 4: ['Mary', 'Lisa']}
python 字典使用的更多相关文章
- Python字典和集合
Python字典操作与遍历: 1.http://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html 2.http://5iqiong. ...
- python 字典排序 关于sort()、reversed()、sorted()
一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...
- python字典中的元素类型
python字典默认的是string item={"browser " : 'webdriver.irefox()', 'url' : 'http://xxx.com'} 如果这样 ...
- python字典copy()方法
python 字典的copy()方法表面看就是深copy啊,明显独立 d = {'a':1, 'b':2} c = d.copy() print('d=%s c=%s' % (d, c)) Code1 ...
- python 字典实现类似c的switch case
#python 字典实现类似c的switch def print_hi(): print('hi') def print_hello(): print('hello') def print_goodb ...
- python字典的常用操作方法
Python字典是另一种可变容器模型(无序),且可存储任意类型对象,如字符串.数字.元组等其他容器模型.本文章主要介绍Python中字典(Dict)的详解操作方法,包含创建.访问.删除.其它操作等,需 ...
- Python 字典(Dictionary)操作详解
Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...
- Python 字典(Dictionary) get()方法
描述 Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法: dict.get(key, default=None) 参数 ...
- Python 字典(Dictionary) setdefault()方法
描述 Python 字典(Dictionary) setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值. 语法 setdefault()方法语法: ...
- python 字典内置方法get应用
python字典内置方法get应用,如果我们需要获取字典值的话,我们有两种方法,一个是通过dict['key'],另外一个就是dict.get()方法. 今天给大家分享的就是字典的get()方法. 这 ...
随机推荐
- iaas,saas,paas,daas区别:
iaas,saas,paas,daas区别: Iaas(Infrastructure as a server):基础设施即服务,是基础层.PaaS(Platform as a Server):平台即服 ...
- vue:引入外部cdn报错 ‘XXX is not defined’ 及事件处理办法
框架:vue-cli(vue脚手架) 例:以cdn引入腾讯防水墙为例 前因:在html的head中引入外部cdn链接, 在vue文件中直接使用,如图 结果:如图报错 解决办法: 1. 在index.h ...
- Redis 源码简洁剖析 08 - epoll
select, poll, epoll 源码分析 参考链接 Redis 源码简洁剖析系列 select, poll, epoll 关于 select, poll, epoll,网络 IO 演变发展过 ...
- 画(HB To Ryby!)
"客人,请描述得具体一点." 他似乎还是很难为情. "呃--就是--一个女孩儿",他又勉强启开嘴,"女孩儿"三个字几乎被咽进嗓子 ...
- nginx 简单实践:静态资源部署、URL 重写【nginx 实践系列之一】
〇.前言 本文为 nginx 简单实践系列文章之一,主要简单实践了两个内容:静态资源部署.重写,仅供参考. 关于 Nginx 基础,以及安装和配置详解,可以参考博主过往文章: https://www. ...
- 高并发编程-ReentrantReadWriteLock深入解析
要点解说ReentrantLock在并发情况下只允许单个线程执行受保护的代码,而在大部分应用中都是读多写少,所以,如果使用ReentrantLock实现这种对共享数据的并发访问控制,将严重影响整体的性 ...
- 基于MPC的快速transformer安全推理框架
论文:一种基于安全多方计算的快速Transformer安全推理方案-刘伟欣 摘要 数据隐私泄露问题:当前Transformer推理应用中用户的数据会被泄露给模型提供方 安全推理方法:基于MPC实现Tr ...
- 推荐一款非常好用的在线 SSH 管理工具
前言 SSH工具在远程连接.文件传输.远程管理和增强安全性等方面发挥着重要作用,是我们开发人员和系统管理员不可或缺的工具.今天大姚给大家推荐一款非常好用的在线 SSH 管理工具:Xterminal. ...
- 近期最值得关注的AI技术报告与Agent综述!
写在前面 如题,近期优秀的大模型层出不穷.作为技术人,需要阅读高质量的AI技术报告或论文,并且掌握未来应用趋势.本文将推荐一些高质量的AI技术报告,以及Agent智能体综述. 大模型技术报告 Deep ...
- 从装水瓶到接雨水:一道经典动态规划问题的深度解析|LeetCode 42 接雨水
LeetCode 42 接雨水 点此看全部题解 LeetCode必刷100题:一份来自面试官的算法地图(题解持续更新中) 生活中的算法 你有没有注意过,很多户外运动的水壶都有不规则的凹凸形状?这些凹凸 ...