字典中的值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
字典有以下几种常用添加元素的方法:
dict = {'a': 1, 'b': 2}
print(dict) # {'a': 1, 'b': 2}
dict['c'] = 3
print(dict) # {'a': 1, 'b': 2, 'c': 3}
dict.update({'b': 4})
print(dict) # {'a': 1, 'b': 4, 'c': 3}
dict.update(d = 5, e = 6) # 这种是以赋值的方法加入字典
print(dict) # {'a': 1, 'b': 4, 'c': 3, 'd': 5, 'e': 6}
可以看到当字典中存在已有的元素时,会覆盖已有元素的值,而不会在已有元素上的值添加新值,这时候就可以采用列表或集合的形式作为字典的值来添加多个元素。
先看看字典的get()方法:返回指定键的值,如果键不在字典中返回默认值 None。
dict.get(key, default=None)
- key -- 字典中要查找的键。
- default -- 如果指定的键不存在时,返回该默认值。
字典的setdefault()方法:如果key在字典中,返回对应的值。如果不在字典中,则插入key及设置的默认值default,并返回default ,default默认值为None。
dict.setdefault(key, default=None)
- key -- 查找的键值。
- default -- 键不存在时,设置的默认键值。
字典的get()方法和setdefault()方法类似,那么就有以下两种添加元素的方法:
dict = {'a': 1, 'b': 2}
dict['c'] = dict.get('c', 3) # 通过get()方法添加元素
print(dict) # {'a': 1, 'b': 2, 'c': 3}
dict.setdefault('d', 4) # 通过setdefault()方法添加元素
print(dict) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
用列表实现添加多个值:
# a对应1,2,3,b对应4,5
letter = ['a', 'b']
num = [1, 2, 3, 4, 5]
p = {}
# 利用dict.get()先创建空的列表
p[letter[0]] = p.get(letter[0], []) # 设置get()方法的默认值为空列表[]
p[letter[1]] = p.get(letter[1], []) # p的值为{'a': [], 'b': []}
# 再加入值
p[letter[0]].append(num[0])
p[letter[0]].append(num[1])
p[letter[0]].append(num[2])
p[letter[1]].append(num[3])
p[letter[1]].append(num[4]) # p的值为{'a': [1, 2, 3], 'b': [4, 5]}
用集合实现添加多个值:
# a对应1,2,3,b对应4,5
letter = ['a', 'b']
num = [1, 2, 3, 4, 5]
p = {}
# 利用dict.setdefault()先创建空的集合
p.setdefault(letter[0], set()) # 设置setdefault()方法的默认值为空集合set()
p.setdefault(letter[1], set()) # p的值为{'a': set(), 'b': set()}
# 再加入值
p[letter[0]].add(num[0])
p[letter[0]].add(num[1])
p[letter[0]].add(num[2])
p[letter[1]].add(num[3])
p[letter[1]].add(num[4]) # p的值为{'a': {1, 2, 3}, 'b': {4, 5}}