目录

1.初始化

2.增

3.删

4.改

5.查

6.排序

7.字典的遍历

8.字典的运算

9.提取字典子集

10.字典列表的去重

11.字典列表的排序

1.初始化

# 方法一: 常规方法
# 如果事先能拼出整个字典,则此方法比较方便
D1 = {'name': 'Bob', 'age': 40}
# 方法二: 动态创建
# 如果需要动态地建立字典的一个字段,则此方法比较方便
D2 = {}
D2['name'] = 'Bob'
D2['age'] = 40
print(D2)  # {'age': 40, 'name': 'Bob'}
# 方法三: dict--关键字形式
# 代码比较少,但键必须为字符串型。常用于函数赋值
D3 = dict(name='Bob', age=45)
print(D3)  # {'age': 45, 'name': 'Bob'}
# 方法四: dict--键值序列
# 如果需要将键值逐步建成序列,则此方式比较有用,常与zip函数一起使用
D4 = dict([('name', 'Bob'), ('age', 40)])
print(D4)  # {'age': 40, 'name': 'Bob'}
D = dict(zip(('name', 'bob'), ('age', 40)))
print(D)  # {'bob': 40, 'name': 'age'}
# 方法五: dict--fromkeys方法# 如果键的值都相同的话,用这种方式比较好,并可以用fromkeys来初始化
D5 = dict.fromkeys(['A', 'B'], 0)
print(D5)  # {'A': 0, 'B': 0}
# 如果键的值没提供的话,默认为None
D6 = dict.fromkeys(['A', 'B'])
print(D6)  # {'A': None, 'B': None}
# 如果键的值没提供的话,默认为None
D7 = dict.fromkeys(['A', 'B'], [0, 1])
print(D7)  # {'A': [0, 1], 'B': [0, 1]}

2.增

# 第一种方法
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
dic["剑圣"] = "无极剑圣"  # 直接增加一个没有的key,如果key存在则直接修改
print(dic)  # 运行结果{'火女': '安妮', '火男': '布兰德', '草丛伦': '盖伦', '琴女': '蔢娜', '剑圣': '无极剑圣'}
# 第二种方法
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
dic.setdefault("剑圣", "无极大师")  # 如果这个key已存在,则不进行增加
print(dic)  # 运行结果 {'火女': '安妮', '火男': '布兰德', '草丛伦': '盖伦', '琴女': '蔢娜', '剑圣': '无极大师'}

3.删

# 第一种方法
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
dic.pop("火女")  # 以key值来删除
print(dic)  # 运行结果 {'火男': '布兰德', '草丛伦': '盖伦', '琴女': '蔢娜'}
# 第二种方法
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
del dic["火男"]  # 用key值删除
print(dic)  # 运行结果 {'火女': '安妮', '草丛伦': '盖伦', '琴女': '蔢娜'}
# 第三种方法
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
dic.popitem()  # 随机删除键值对
print(dic)  # 运行结果 {'火女': '安妮', '火男': '布兰德', '草丛伦': '盖伦'}
# 第四种方法
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
dic.clear()  # 直接清空字典

4.改

# 第一种方法
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
dic["草丛伦"] = "德玛西亚之力"  # 直接对key值进行赋值,存在则是对value修改,不存在就是增加
print(dic)  # 运行结果 {'火女': '安妮', '火男': '布兰德', '草丛伦': '德玛西亚之力', '琴女': '蔢娜'}
# 第二种方法
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
dic1 = {"维恩": "UZI", "火女": "安妮"}
dic.update(dic1)  # 将dic1若融合到dic中
print(dic1)  # 运行结果 {'火女': '安妮', '火男': '布兰德', '草丛伦': '盖伦', '琴女': '蔢娜', '维恩': 'UZI'}

5.查

# 第一种方法
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
print(dic["琴女"])  # 直接查询 要注意这里的dic["琴女"]是有返回值的
# 结果:蔢娜
# 第二种方法
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
print(dic.get("草丛伦"))  # 通过get得到的返回值 如果不存在key怎返回none
# 结果:盖伦
# 第三种方法
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
print(dic.setdeault("火男"))  # 通过key查找,如果不存在key则返回none
# 第四种方法
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
for i in dic:  # for查询 这是遍历查询 查询出来的是key值print(i)
# 运行结果:
# 火女
# 火男
# 草丛伦
# 琴女

6.排序

d1 = {'key3': 4, 'key2': 5, 'key1': 4, 'key4': 2, }
# 利用key排序
print(sorted(d1))  # ['key1', 'key2', 'key3', 'key4']
# 利用key排序,逆序
print(sorted(d1, reverse=True))  # ['key4', 'key3', 'key2', 'key1']
# 利用value排序
print(sorted(d1, key=lambda k: d1[k]))  # ['key4', 'key3', 'key1', 'key2']
print(sorted(d1, key=d1.__getitem__))  # ['key4', 'key3', 'key1', 'key2']
# 利用value排序,逆序
print(sorted(d1, key=lambda k: d1[k], reverse=True))  # ['key2', 'key3', 'key1', 'key4']
print(sorted(d1, key=d1.__getitem__, reverse=True))  # ['key2', 'key3', 'key1', 'key4']
# dict_items进行排序
print(sorted(d1.items()))  # [('key1', 4), ('key2', 5), ('key3', 4), ('key4', 2)]
print(sorted(d1.items(), reverse=True))  # [('key4', 2), ('key3', 4), ('key2', 5), ('key1', 4)]
print(sorted(d1.items(), key=lambda k: k[1]))  # [('key4', 2), ('key3', 4), ('key1', 4), ('key2', 5)]
print(sorted(d1.items(), key=lambda k: k[1], reverse=True))  # [('key4', 2), ('key3', 4), ('key1', 4), ('key2', 5)]# 使用sorted方法可以对单个字典的键名进行正向或逆向排序(reverse=True),得到是一个排过序的键名列表。然后我们通过使用for key in sorted(d)遍历
# 排过序的键从而得到排过序的值。
d1 = {'key3': 4, 'key2': 5, 'key1': 4, 'key4': 2, }
d3 = sorted(d1)
print(d3)  # ['key1', 'key2', 'key3', 'key4']
print(sorted(d1, reverse=True))  # ['key4', 'key3', 'key2', 'key1']
for key in sorted(d1):print(d1[key])
# 4
# 5
# 4
# 2
# 如果我们希望根据值来排序,我们一般有2种方法: 1. 利用zip方法构建键值反转字典再排序。2. 使用匿名函数lambda。方法2通常是一种更好的方法。
# 方法1: 使用zip方法反转字典
d1 = {'key3': 4, 'key2': 5, 'key1': 4, 'key4': 2, }
d2 = dict(zip(d1.values(), d1.keys()))
print(list(d2.keys()))  # [4, 5, 2]
for key in sorted(d2):print(d2[key])
# key4
# key1
# key2
# 由于使用zip方法导致了数值的缺失,一个更好的方法是使用lambda函数指定key来排序。
# 方法2: 使用lambda匿名函数
# 该方法设置排序的key为d1[k], 即每个键值对的值来排序。
d1 = {'key3': 4, 'key2': 5, 'key1': 4, 'key4': 2, }
d2 = sorted(d1, key=lambda k: d1[k])
print(d2)  # ['key4', 'key3', 'key1', 'key2']
for key in d2:print(d1[key])
# 2
# 4
# 4
# 5

7.字典的遍历

# values方法:
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
for i in dic.values():print(i)  # 遍历出value的值
# 运行结果:
# 安妮
# 布兰德
# 盖伦
# 蔢娜
# keys方法:
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
for i in dic.keys():print(i)  # 遍历出key的值
# 运行结果:
# 火女
# 火男
# 草丛伦
# 琴女
# 注意:遍历keys方法和直接遍历dic字典是一样,都是遍历出key值
# items方法
dic = {"火女": "安妮", "火男": "布兰德", "草丛伦": "盖伦", "琴女": "蔢娜"}
for i in dic.items():print(i)  # 遍历出里面的键值对,以元组形式输出
# 运行结果
# ('火女', '安妮')
# ('火男', '布兰德')
# ('草丛伦', '盖伦')
# ('琴女', '蔢娜')

8.字典的运算

# 假设我们有如下两个字典,我们能实现直接相加或相减吗? 答案是不能。Python 3并不支持字典的直接相加或相减。如果你要合并两个字典,需要使用dict.update()方法。
d1 = {'key1': 1, 'key2': 7}
d2 = {'key1': 3, 'key3': 4}
# 虽然python不支持加减运算,但支持针对keys()和values()类似集合的运算, 可以用来求同求异,代码如下所示:
print(d1.keys() & d2.keys())  # {'key1'}
print(d1.keys() - d2.keys())  # {'key2'}

9.提取字典子集

# 假设我们有如下一个字典(姓名->分数),我们需要提取分数大于60的键值对组成一个新的字典子集,我们应该怎么办呢?
d = {'John': 50, 'Mary': 65, 'Kitty': 90, 'Tom': 100}
# 最好最快的方式就是使用字典推倒表达式,方法如下。该方法工作常用,考试必考,请一定要熟练掌握哦。
d = {'John': 50, 'Mary': 65, 'Kitty': 90, 'Tom': 100}
sub_d = {key: value for key, value in d.items() if value >= 60}
print(sub_d)  # {'Mary': 65, 'Kitty': 90, 'Tom': 100}

10.字典列表的去重

# 假设我们有如下一个字典列表,我们需要实现字典值的去重,即提取所有独特的值组成一个列表。一个最好的方式就是使用列表表达式。
d1 = [{'key1': 2}, {'key1': 3}, {'key2': 2}, {'key3': 4}]
u_value = set(val for dict in d1 for val in dict.values())
print(list(u_value))  # [2, 3, 4]
# 同样的你可以使用列表表达式提取所有独特的键名组成一个列表。
d1 = [{'key1': 2}, {'key1': 3}, {'key2': 2}, {'key3': 4}]
u_key = set(key for dict in d1 for key in dict.keys())
print(list(u_key))  # ['key2', 'key3', 'key1']

11.字典列表的排序

# 实际应用中更常见的是对字典列表排序,而不是对当个字典的键或值进行排序。假设你有一个字典列表,
# 你想根据某个或某几个字典字段来排序这个列表。这时你需要使用 operator 模块的 itemgetter 函数,
# 可以非常容易的排序这样的数据结构。 假设你从数据库中检索出来网站会员信息列表,并且以下列的数据结构返回:
rows = [{'fname': 'Brian', 'lname': 'Jones', 'uid': 1003},{'fname': 'David', 'lname': 'Beazley', 'uid': 1002},{'fname': 'John', 'lname': 'Cleese', 'uid': 1001},{'fname': 'Big', 'lname': 'Jones', 'uid': 1004}]
# 根据任意的字典字段来排序输入结果行是很容易实现的,代码示例:
from operator import itemgetter
rows_by_fname = sorted(rows, key=itemgetter('fname'))
print(rows_by_fname)
# 代码的输出如下。注意该方法返回的直接排过序的完整字典,而不是排过序的键名列表。
# [{'fname': 'Big', 'uid': 1004, 'lname': 'Jones'},
#  {'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'},
#  {'fname': 'David', 'uid': 1002, 'lname': 'Beazley'},
#  {'fname': 'John', 'uid': 1001, 'lname': 'Cleese'}]
# itemgetter() 函数也支持多个 keys,比如下面的代码
rows_by_lfname = sorted(rows, key=itemgetter('lname', 'fname'))
print(rows_by_lfname)
# 输出如下:
# [{'fname': 'David', 'uid': 1002, 'lname': 'Beazley'},
#  {'fname': 'John', 'uid': 1001, 'lname': 'Cleese'},
#  {'fname': 'Big', 'uid': 1004, 'lname': 'Jones'},
#  {'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'}]

python的dict相关推荐

  1. python字典(dict)+常用方法操作+列表、元组、集合、字典的互相转换

    python字典(dict)+常用方法操作+列表.元组.集合.字典的互相转换 字典也是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据. 为了保存具有映射关系的数据,Python ...

  2. Python中将dict转换为kwargs

    Python中将dict转换为kwargs 我们都知道kwargs是变长kv参数,能否将dict转换成kwargs. 在python调用函数的时候func(**{'type'='event'}),可以 ...

  3. Python的dict字典结构操作方法学习笔记

    Python的dict字典结构操作方法学习笔记 这篇文章主要介绍了Python的dict字典结构操作方法学习笔记本,字典的操作是Python入门学习中的基础知识,需要的朋友可以参考下 一.字典的基本方 ...

  4. python的dict实现

    python的dict实现 原文:http://www.jianshu.com/p/02af9673ab34 由于Python内部大量使用dict这种结构,效率要求很高,所以Python没有使用STL ...

  5. python将dict中的unicode打印成中文

    python将dict中的unicode打印成中文 import json a = {u'content': {u'address_detail': {u'province': u'\u5409\u6 ...

  6. python中dict和lambda结合的小例子

    python的dict用起来很方便,可以自定义key值,并通过下标访问,示例如下: >>> d = {'key1':'value1', ... 'key2':'value2', .. ...

  7. python中dict函数_dict()函数以及Python中的示例

    python中dict函数 Python dict()函数 (Python dict() function) dict() function is a library function, it is ...

  8. python中dict转换成list_python里dict变成list实例方法

    python里dict(字典)怎么变成list(列表)? 说明:列表不可以转换为字典 1.转换后的列表为无序列表 a = {'a' : 1, 'b': 2, 'c' : 3} #字典中的key转换为列 ...

  9. python的Dict和set类型

    python的Dict和set类型 都可以使用 dicts = { } ,sets= { } 方式 1. dict类型 Python内置了字典:dict的支持,dict全称dictionary,在其他 ...

  10. Python 字典 dict() 函数

    描述 Python 字典 dict() 函数用于创建一个新的字典,用法与 Pyhon 字典 update() 方法相似. 语法 dict() 函数函数语法: dict(key/value) 参数说明: ...

最新文章

  1. 同样都是调参,为什么人家的神经网络比我牛逼 100 倍?
  2. C++_泛型编程与标准库(一)
  3. 利用sharding-jdbc分库分表
  4. mysql怎么升级_MySQL UPDATE 更新
  5. html无间隔字幕滚动,js实现文字超过显示宽度每间隔1s自动向左滚动显示
  6. 为outlook增加“邮件召回”功能
  7. Ubuntu KDE中 Kaccounts-provider 问题
  8. 蓝色大巴汽车网站404页面源码
  9. 迁移桌面程序到MS Store(8)——通过APPX下载Win32Component
  10. Java 读取txt文件,读取结果保存到数据库
  11. kubernetes 容器持久化存储PV、PVC、StorageClass
  12. Microsoft® .NET Micro Framework简介
  13. goredis文档中文翻译---Getting started with Golang Redis
  14. php编程语言教程,php语言教程
  15. It has been compressed and nested jar files must be stored without compression
  16. SwiftUI - Text
  17. 鱼眼校正c语言算法,一种鱼眼图像逆向经纬映射的快速校正算法
  18. 六个计算机硬件商标名称,10nm显卡可能有名字了,Intel悄悄申请全新商标!
  19. vue:实现前端生成并下载二维码(使用qrcodejs2插件)
  20. no matching distribution found for XXX

热门文章

  1. c语言程序从哪里开始执行
  2. 电脑计算机找不到指定的程序,光驱双击显示找不到应用程序。怎么办?
  3. 按“window+E”键出现【找不到应用程序】或【explore.exe找不到】的解决方法
  4. python自学爬虫要多久_自学python爬虫需要多久
  5. 《Real-Time Rendering 4th Edition》读书笔记--简单粗糙翻译 第六章 纹理 Texturing
  6. hibernate使用Query进行查询
  7. python javascript区别_Python,Java和JavaScript这3个编程语言未来哪个更有前景?
  8. uniapp通过mixin隐藏所有页面右上角分享按钮
  9. h5活动是什么意思_H5活动页能给你带来什么?
  10. MINIGUI3.2 设置按钮前景色