当前位置: 移动技术网 > IT编程>脚本编程>Python > Python 字典操作

Python 字典操作

2018年07月19日  | 移动技术网IT编程  | 我要评论

jdk1.7,文武教师网,中国食品网

## 一个键映射多个值,将元素对转换为 d = {'a': [1,2,3,4], 'b': [5,6,7,8]}

  # 普通方法

1 pairs = [('a', 1),('b', 5),('a', 4),('a', 3),('b', 8),('b', 6),('a', 2),('b', 7),]
2 d = {}
3 for k, v in pairs:
4     if k not in d:  # 若key不存在,则手动创建
5         d[k] = []
6     d[k].append(v)
7 
8 print(d)
9 # {'a': [1, 4, 3, 2], 'b': [5, 8, 6, 7]}

  

  # 使用defaultdict

1 from collections import defaultdict
2 
3 pairs = [('a', 1),('b', 5),('a', 4),('a', 3),('b', 8),('b', 6),('a', 2),('b', 7),]
4 d = defaultdict(list)  # 参数可以是列表list,也可以是集合set
5 for k, v in pairs:
6     d[k].append(v)    # 根据defaultdict的参数类型使用append或者add,defaultdict会自动创建不存在的key
7 
8 print(d)
9 # defaultdict(<class 'list'>, {'a': [1, 4, 3, 2], 'b': [5, 8, 6, 7]})

 

## 字典求最大值,最小值,排序

 1 scores = {
 2     "Stanley": 88,
 3     "Lily": 92,
 4     "Bob": 91,
 5     "Well": 80,
 6     "Peter": 92
 7 }
 8 lowest = min(scores, key=lambda s: s[1])
 9 print(lowest)
10 # Well      # 只能得到一个键
11 
12 # 使用zip()函数反转键值对,sorted()函数自动比较第一个值,若第一个值相等则比较第二个值
13 
14 ordered_scores = sorted(zip(scores.values(), scores.keys()))
15 lowest = min(ordered_scores)
16 highest = max(ordered_scores)
17 print(lowest)
18 # (80, 'Well')   # 得到完整的值键对
19 print(highest)
20 # (92, 'Peter')  # 分数相同比较第二个值, P的ASCII编码中比L大,所以结果是(92, 'Peter')
21 
22 # 注意:zip()函数创建的只是一次性访问的迭代器,不可重复访问
23 
24 zipped_scores = zip(scores.values(), scores.keys())
25 lowest = min(zipped_scores)
26 highest = max(zipped_scores) # ValueError: max() arg is an empty sequence
27 print(lowest)
28 # (80, 'Well')

 

## 字典的异同比较

 1 a = {
 2     'x': 1,
 3     'y': 2,
 4     'z': 3
 5 }
 6 b = {
 7     'o': 2,
 8     'q': 4,
 9     'y': 2
10 }
11 
12 print(a.keys() - b.keys()) # 使用减号,返回两个字典中不相同的部分
13 # {'z', 'x'}
14 print(a.keys() & b.keys()) # 使用&返回两个字典的交集
15 # {'y'}
16 print(a.items() - b.items())
17 # {('z', 3), ('x', 1)}
18 print(a.items() & b.items())
19 # {('y', 2)}
20 #
21 # 不能使用 a.values() 和 b.values() 进行比较

 

 

参考资料:

  Python Cookbook, 3rd edition, by David Beazley and Brian K. Jones (O’Reilly).

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网