字典,python数据结构中的大杀器,是另一种可变容器模型,且可存储任意类型对象。字典是 除列表以外 Python 之中 最灵活 的数据类型。字典可以用来 存储多个数据。通常用于存储描述一个物体的相关信息。

下面分享9个实用的字典操作,欢迎大家点赞、收藏、支持!
1. 键是否存在
| d = {"name": "Tony", "age":100} |
| key = "phone" |
| if key in d: |
| print("Key exists") |
| else: |
| print("Not exists") |
| |
值得注意的是:不要用 key in d.keys()。这是一个多余的操作,因为 d.keys() 会返回一个新的列表对象,导致使用内存变大。
2. 合并字典
| |
| d1 = {'a': 1, 'b': 2} |
| d2 = {'b': 3, 'c': 4} |
| d = {**d1, **d2} |
| print(d) |
| print(d1) |
| print(d2) |
| |
| |
| d1 = {'a': 1, 'b': 2} |
| d2 = {'b': 3, 'c': 4} |
| d2.update(d1) |
| print(d1) |
| print(d2) |
值得注意的是:第一个例子,d1 和 d2 不会被修改,并且相同的key不会被重新赋值。第二个例子,d2 被 d1更新,相同的key会被重新赋值。
3. 遍历字典
| |
| d = {'c': 3, 'd': 4, 'a': 1, 'b': 2} |
| for key, value in d.items(): |
| print(key, value) |
| |
| |
| d = {'c': 3, 'd': 4, 'a': 1, 'b': 2} |
| for key in d: |
| print(key, d[key]) |
方法一中 d.items() 需要返回一个额外的 dict_items 对象。
4. 字典推导式
| fruits = ['apple', 'mango', 'banana','cherry'] |
| d = {f:len(f) for f in fruits} |
| print(d) |
5. 字典排序
字典本质上是一个无序的容器对象(从Python 3.6开始支持顺序,但是这个顺序是指key添加的顺序)。我们可以使用 lambda 函数作为排序键按键或值对字典进行排序。
| d = {"c": 3, "a": 1, "f":6, "b": 0} |
| |
| sorted(d.items(), key=lambda x:x[0]) |
| |
| sorted(d.items(), key=lambda x:x[1]) |
6. 用字典计数
| |
| chars = ['a', 'b','c','a','d','c'] |
| d = {} |
| for c in chars: |
| d[c] = d.get(c, 0) + 1 |
| print(d) |
| |
| |
| import collections |
| chars = ['a', 'b','c','a','d','c'] |
| d = collections.Counter(chars) |
| print(d) |
7. 删除字典中的键值对
| d = {'ob1':'computer', 'ob2':'mouse', 'ob3':'printer'} |
| |
| del d['ob1'] |
| print(d) |
| |
| d.clear() |
| print(d) |
8. 同长度的2个list转换为字典
| stocks = ['reliance', 'infosys', 'tcs'] |
| prices = [2175, 1127, 2750] |
| d = dict(zip(stocks, prices)) |
| print(d) |
9. 字典的复制
| |
| d = {'a': 1, 'b': 2} |
| x = d |
| x.update({'c': 3}) |
| print(x) |
| print(d) |
| x.clear() |
| print(x) |
| print(d) |
| |
| |
| d = {'a': 1, 'b': 2} |
| x = d.copy() |
| x.update({'c': 3}) |
| print(x) |
| print(d) |
| x.clear() |
| print(x) |
| print(d) |
小节
上面分享的9个python字典操作,希望对你有所帮助!