d = {}
d = {'name': 'tarena', 'age': 15}
d = {'姓名': '小张'}
d = {1:'壹', 2:'贰'}
Python可以在创建字典的时候初始化字典
>>> info = {"name" : 'cold'}
>>> info = dict(name = 'cold') # 更优雅
很明显第二种方法更加的优雅和减少一些特殊字符的输入,但是有种情况第二种不能胜任
>>> key = 'name'
>>> info = { key :'cold'} # {'name':'cold'}
>>> info = dict(key = 'cold') # {'key': 'cold'}
明显第二种方法就会引发一个不容易找到的bug
Python字典还有一种初始化方式,就是使用字典的fromkeys方法可以从列表中获取元素作为键并用None或fromkeys方法的第二个参数初始化
>>> info = {}.fromkeys(['name', 'blog'])
>>> info
{'blog': None, 'name': None}
>>> info = dict().fromkeys(['name', 'blog'])
>>> info
{'blog': None, 'name': None}
>>> info = dict().fromkeys(['name', 'blog'], 'linuxzen.com')
>>> info
{'blog': 'linuxzen.com', 'name': 'linuxzen.com'}
字典可以这样获取到键的值
>>> info = {'name':'cold', 'blog':'linuxzen.com'}
>>> info['name']
'cold'
但是如果获取不存在的键的值就会触发的一个KeyError异常,字典有一个get方法,可以使用字典get方法更加优雅的获取字典
>>> info = dict(name= 'cold', blog='www.linuxzen.com')
>>> info.get('name')
'cold'
>>> info.get('blogname')
None
>>> info.get('blogname', 'linuxzen')
'linuxzen'
我们看到使用get方法获取不存在的键值的时候不会触发异常,同时get方法接收两个参数,当不存在该键的时候就会返回第二个参数的值 我们可以看到使用get更加的优雅
字典还有一种方法返回指定键的值,D.setdefault()
D = {'Name': 'Runoob', 'Age': 7}
print ("Age 键的值为 : %s" % D.setdefault('Age','25')) # 键存在在字典中则不会设置为指定值
print ("Sex 键的值为 : %s" % D.setdefault('Sex', 'NA')) # 键不存在,指定一个值
print ("School 键的值为 : %s" % D.setdefault('School')) # 键不存在,不指定值,默认为None
print ("新字典为:", D)
#output:
Age 键的值为 : 7
Sex 键的值为 : NA
School 键的值为 : None
新字典为: {'Name': 'Runoob', 'Age': 7, 'Sex': 'NA', 'School': None}
Python 字典 setdefault() 方法和 get() 方法类似,返回指定键的值,如果键不在字典中,将会添加键并将值设置为一个指定值,默认为None。已存在不修改指定值
get() 和 setdefault() 区别: setdefault() 返回的键如果不在字典中,会添加键(更新字典),而 get() 不会添加键。
语法:del 字典[键]
d = {'name': 'china', 'pos': 'asia'}
del d['pos']
print(d)
del d['name']
print(d) # {}
#ouput
{'name': 'china'}
{}
可以用 in 运算符来判断一个键是否存在于字典中,如果存在则返回True, 否则返回False
not in 与 in 返回值相反
d = {'a': 1, 'b': 2}
'a' in d # True
1 in d # False
100 not in d # True
2 not in d # True
字典是可迭代对象,字典只能对键进行迭代访问
d = {'name': 'LeoLRH', (2002, 1, 1): '生日'}
for x in d:
print(x)
# output
name LeoLRH
(2002, 1, 1) 生日
字典也可以直接对键值进行排序,但键值必须都为数或都为字符
d = {3: 'LeoLRH', 1: '生日'}
for x in sorted(d.keys()):
print(x,d[x])
# output
1 生日
3 LeoLRH
len(x) 返回字典键-值对的个数
max(x) 返回字典的键的最大值
min(x) 返回字典的键的最小值
sum(x) 返回字典所有键的和
any(x) 真值测试,只对键测试,如果其中一个键为True,结果为True
all(x) 真值测试,全部键为True时,结果才为True