整理很好的文章

文章复制链接:

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 字典使用的更多相关文章

  1. Python字典和集合

    Python字典操作与遍历: 1.http://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html 2.http://5iqiong. ...

  2. python 字典排序 关于sort()、reversed()、sorted()

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

  3. python字典中的元素类型

    python字典默认的是string item={"browser " : 'webdriver.irefox()', 'url' : 'http://xxx.com'} 如果这样 ...

  4. python字典copy()方法

    python 字典的copy()方法表面看就是深copy啊,明显独立 d = {'a':1, 'b':2} c = d.copy() print('d=%s c=%s' % (d, c)) Code1 ...

  5. python 字典实现类似c的switch case

    #python 字典实现类似c的switch def print_hi(): print('hi') def print_hello(): print('hello') def print_goodb ...

  6. python字典的常用操作方法

    Python字典是另一种可变容器模型(无序),且可存储任意类型对象,如字符串.数字.元组等其他容器模型.本文章主要介绍Python中字典(Dict)的详解操作方法,包含创建.访问.删除.其它操作等,需 ...

  7. Python 字典(Dictionary)操作详解

    Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...

  8. Python 字典(Dictionary) get()方法

    描述 Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法: dict.get(key, default=None) 参数 ...

  9. Python 字典(Dictionary) setdefault()方法

    描述 Python 字典(Dictionary) setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值. 语法 setdefault()方法语法: ...

  10. python 字典内置方法get应用

    python字典内置方法get应用,如果我们需要获取字典值的话,我们有两种方法,一个是通过dict['key'],另外一个就是dict.get()方法. 今天给大家分享的就是字典的get()方法. 这 ...

随机推荐

  1. alibabacloud-jindodata

    https://github.com/aliyun/alibabacloud-jindodata https://github.com/aliyun/alibabacloud-jindodata/bl ...

  2. Qt编写视频监控系统79-四种界面导航栏的设计

    一.前言 最初视频监控系统按照二级菜单的设计思路,顶部标题栏一级菜单,左侧对应二级菜单,最初采用图片在上面,文字在下面的按钮方式展示,随着功能的增加,二级菜单越来越多,如果都是这个图文上下排列的按钮, ...

  3. Qt编写物联网管理平台37-逻辑设计

    一.前言 本系统的逻辑设计是个人认为做过的系统中最好的,一个系统支持多个通信端口,每个通信端口都可选不同的通信协议,一个通信端口可以接255个控制器,相当于主设备,一个控制器可以接255个探测器,相当 ...

  4. Qt开发经验小技巧211-215

    QMainWindow 在对停靠窗体进行排列的时候,有些不常用的设置容易遗忘,建议将 QMainWindow 的头文件函数过一遍一目了然. //设置停靠参数,不允许重叠,只允许拖动 this-> ...

  5. Qt编写的项目作品8-视频综合应用示例

    一.功能特点 1.1 基础功能 支持各种音频视频文件格式,比如mp3.wav.mp4.asf.rm.rmvb.mkv等. 支持本地摄像头设备,可指定分辨率.帧率. 支持各种视频流格式,比如rtp.rt ...

  6. 肖健雄(Jianxiong Xiao)的开源SFM代码SFMedu的运行方法

    注意:本文是针对肖健雄(Jianxiong Xiao)博士的的开源SFM代码SFMedu(https://github.com/jianxiongxiao/SFMedu)的运行方法. 本人的运行环境: ...

  7. 实时社群技术专题(一):支持百万人超级群聊,一文读懂社群产品Discord

    本文由腾讯产品体验设计师volihuang分享,原题"千万级增长,实时社交产品Discord拆解",本文收录时有内容修订和大量排版优化. 1.引言 对于大多数人而言,对即时通讯IM ...

  8. Springboot 整合 xxl-job

    前言 很久很久以前写过好几篇关于定时任务的使用系列的文章: 这一篇是最简单的,就是单纯跑跑定时任务,那你看这篇就行,没必要用xxljob(因为xxljob要跑服务端,然后自己服务作为客户端接入): 文 ...

  9. Netty的实现原理、特点与优势、以及适用场景

    Netty 1.介绍 Netty是由JBOSS提供的一个java开源框架. Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持.作为当前最流行的NIO框架,Ne ...

  10. unicode编码 asis_2019_unicorn_shop

    这题就是让我们购买第四个商品 当我们输入price为1337.0的时候他会报错,显示要我们只输入一个字符 那么我们就要想怎样用一个字符来表示一个比1337还要大的数字 答案是unicode 编码 (题 ...