key不能重复,如果重复会把value值替换掉。字典的key实际上是自动排重。
>>> d={}
>>> type(d)
<class 'dict'>
>>> isinstance(d,dict)
True
>>> d[1]="a"
>>> d
{1: 'a'}
>>> d[[1]]=1
>#字典前面的key必须是一个不可变类型,可以用数字、字符串、元组做key
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> d={}
>>> d[1]=1
>>> d
{1: 1}
>>> d[1]=2
>>> d
{1: 2}
快速生成字典:
>>> d=dict(a=1,b=2,c="3")
>>> d
{'a': 1, 'b': 2, 'c': '3'}
遍历:默认遍历他的key,两种方法都可以
>>> for i in d:
... print(i)
...
a
b
c
>>> for i in d.keys():
... print(i)
...
a
b
c
遍历values
>>> for i in d.values():
... print(i)
...
1
2
3
同时遍历key和values
>>> for k,v in d.items():
... print(k,":",v)
...
a : 1
b : 2
c : 3
>>> list(d.items())
[('a', 1), ('b', 2), ('c', '3')]
>>> for k,v in d.items():
... print(k,"=",v)
...
a = 1
b = 2
c = 3
排序:
>>> user={'user3':'a','user2':'c','user1':'b'}
>>> user.items()
dict_items([('user3', 'a'), ('user2', 'c'), ('user1', 'b')])
>>> sorted(user.items(),key=lambda e:e[0],reverse=False)
[('user1', 'b'), ('user2', 'c'), ('user3', 'a')]
默认值setdefault():如果字典中包含给定值,则返回该键对应的值,否则返回为该键设置的值
>>> d.setdefault("a",1)
1
>>> d
{'a': 1, 'x': 2, 'c': 3}
>>> d.setdefault("m",1)
1
>>> d
{'a': 1, 'x': 2, 'c': 3, 'm': 1}
zip()
将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
>>> dict(a=1,b=2,c=3)
{'a': 1, 'b': 2, 'c': 3}
>>> zip([1,2,3],[4,5,6])
<zip object at 0x000000000288AA08>
>>> list(zip([1,2,3],[4,5,6])) #生成列表
[(1, 4), (2, 5), (3, 6)]
>>> dict(zip([1,2,3],[4,5,6])) #生成字典
{1: 4, 2: 5, 3: 6}
>>> dict([(1,2),(3,4)])
{1: 2, 3: 4}
fromkeys()返回一个新的字典
>>> d={}
>>> d.fromkeys([1,2,3],"a")
{1: 'a', 2: 'a', 3: 'a'}
>>> d.fromkeys([1,2,3],100)
{1: 100, 2: 100, 3: 100}
>>> d=d.fromkeys([1,2,3])
>>> d
{1: None, 2: None, 3: None}
>>> d=dict.fromkeys([1,2,3])
>>> d
{1: None, 2: None, 3: None}