1 # dict字典
2 # 字典是一种组合数据, 没有顺序的组合数据, 数据以键值对形式出现
3 # 创建空字典1
4 d1 = {}
5 print(d1)
6
7 # 创建空字典2
8 d2 = dict()
9 print(d2)
10
11 # 创建有值得字典, 每一组数据都用冒号隔开, 每一对键值对用逗号隔开
12 d = {"one": 1, "two": 2, "three": 3}
13 print(d)
14
15 # 用dict创建内容字典1
16 d = dict({"one": 1, "two": 2, "three": 3})
17 print(d)
18
19 # 用dict创建内容字典2
20 # 利用关键字参数
21 d = dict(one=1, two=2, three=3)
22 print(d)
23
24
25 d = dict([("one", 1), ("two", 2), ("three", 3)])
26 print(d)
27
28 # a = 1
29 # b = 2
30 # c = 3
31 # d = 4
32 # list = [a, b, c, d]
33 # mydict = dict.fromkeys(list, "?")
34 # print(mydict)
35
36 # 字典的特征
37 # -字典是序列类型, 但是是无序的序列, 所以没有分片和索引
38 # -字典中的数据每个都有键值对,即KV对
39 # -key:必须是可哈希的值,比如int,string, float, tuple, 但是list, set, dict不行
40 # -value:任何值
41 # 字典常见操作
42 # -访问数据
43 d = {"one": 1, "two": 2, "three": 3}
44 # 注意访问格式
45 # 中括号内饰键值
46 print(d["one"])
47
48 d["one"] = "eins"
49 print(d)
50
51 # 删除某个操作
52 # 使用del操作
53 del d["one"]
54 print(d)
55
56 # 成员检查in, not in
57 # 成员检查的是key内容
58 d = {"one": 1, "two": 2, "three":3}
59 if 2 in d:
60 print("value")
61
62 if "two" in d:
63 print("key")
64
65 if ("two", 2) in d:
66 print("kv")
67
68
69 d = dict([("one", 1), ("two", 2), ("three", 3)])
70 # 遍历在python2 和 3 中区别比较大, 代码不通用
71 # 按key来使用for循环
72 for k in d:
73 print(k, "--", d[k])
74
75 # 同上
76 for k in d.keys():
77 print(k, "--", d[k])
78
79 # 只访问字典的值
80 for v in d.values():
81 print(v)
82
83 # 注意以下特殊用法
84 for k, v in d.items():
85 print(k, "--", v)
86
87
88 # 字典生成式
89 d = dict([("one", 1), ("two", 2), ("three", 3)])
90
91 # 的常规字典生成
92 dd = {k: v for k, v in d.items()}
93 print(dd)
94
95 # 加限制条件的常规字典生成
96 dd = {k: v for k, v in d.items() if v % 2 == 0}
97 print(dd)
98
99
100 # 字典的相关函数
101 # 通用函数:len, max, min, dict
102 # *str(字典):返回字典的字符串格式
103 d = dict([("one", 1), ("two", 2), ("three", 3)])
104 print(d)
105 print(str(d))
106
107
108 # clear:清空字典
109 # items:返回字典的键值对组成的元组格式
110 d = dict([("one", 1), ("two", 2), ("three", 3)])
111 # d = {'one': 1, 'two': 2, 'three': 3}
112 print(d)
113 i = d.items()
114 print(type(i))
115 print(i)
116
117
118 # keys:返回字典的键组成的一个结构
119 k = d.keys()
120 print(type(k))
121 print(k)
122
123
124 # values:同理, 一个可迭代的结构
125 v = d.values()
126 print(type(v))
127 print(v)
128
129
130 # get :根据指定键返回相应的值, 好处是, 可以设置默认值
131 d = dict([("one", 1), ("two", 2), ("three", 3)])
132 print(d)
133 print(d.get("on333"))
134
135 # get 默认值是None, 可以设置
136 print(d.get("on444", 100))
137
138 # 一以下会报错
139 # print(d["on333"])
140
141
142 # fromkeys:使用指定的序列作为键, 使用一个值作为字典的所有的键的值
143 l = ["eins", "zwei", "dree"]
144 # 注意fromkeys俩个参数的类型
145 d = dict.fromkeys(l, "hahaha")
146 print(d)
147
148
149
150 :::
151 {}
152 {}
153 {'one': 1, 'two': 2, 'three': 3}
154 {'one': 1, 'two': 2, 'three': 3}
155 {'one': 1, 'two': 2, 'three': 3}
156 {'one': 1, 'two': 2, 'three': 3}
157 1
158 {'one': 'eins', 'two': 2, 'three': 3}
159 {'two': 2, 'three': 3}
160 key
161 one -- 1
162 two -- 2
163 three -- 3
164 one -- 1
165 two -- 2
166 three -- 3
167 1
168 2
169 3
170 one -- 1
171 two -- 2
172 three -- 3
173 {'one': 1, 'two': 2, 'three': 3}
174 {'two': 2}
175 {'one': 1, 'two': 2, 'three': 3}
176 {'one': 1, 'two': 2, 'three': 3}
177 {'one': 1, 'two': 2, 'three': 3}
178 <class 'dict_items'>
179 dict_items([('one', 1), ('two', 2), ('three', 3)])
180 <class 'dict_keys'>
181 dict_keys(['one', 'two', 'three'])
182 <class 'dict_values'>
183 dict_values([1, 2, 3])
184 {'one': 1, 'two': 2, 'three': 3}
185 None
186 100
187 {'eins': 'hahaha', 'zwei': 'hahaha', 'dree': 'hahaha'}