写在前面
文章内容为个人学习笔记,学习内容源自“小甲鱼”-《零基础入门学习Python》
1、字典的生成
# {key:value}
# 直接生成
>>> y = {"中国":"Chian", "英国":"England"}
>>> type(y)
<class 'dict'>
# dict()函数
# dict(key=value)
>>> y = dict(中国="Chian", 英国="England")
>>> y
{'中国': 'Chian', '英国': 'England'}
# 列表
# dict([(key,value), (key,value)])
>>> y = dict([("中国","Chian"), ("英国","England")])
>>> y
{'中国': 'Chian', '英国': 'England'}
# 混合方法
>>> y = dict({"中国":"Chian", "英国":"England"}, 日本="Jepan")
>>> y
{'中国': 'Chian', '英国': 'England', '日本': 'Jepan'}
# zip()函数
>>> y = dict(zip(["中国", "英国"], ["China", "England"]))
>>> y
{'中国': 'China', '英国': 'England'}
# 查找key对应的value
>>> y["中国"]
'Chian'
2、改
>>> y["中国"] = "china"
>>> y["中国"]
'china'
# update([other])
# 支持同时传入多个键值对,也可传入另外一个字典,或者一个包含键值对的可迭代对象
>>> x = dict.fromkeys('hello')
>>> x
{'h': None, 'e': None, 'l': None, 'o': None}
>>> x.update({'h':114, 'e':115})
>>> x
{'h': 114, 'e': 115, 'l': None, 'o': None}
>>> x.update(l=100, o=110)
>>> x
{'h': 114, 'e': 115, 'l': 100, 'o': 110}
>>> x.update(xx=110)
>>> x
{'h': 114, 'e': 115, 'l': 100, 'o': 110, 'xx': 110}
3、增
# fromkeys(iterable[, value])
# 生成一个字典,key来源于iterable中的每个元素,默认值为vlaue
>>> x = dict.fromkeys(['china', 'england', 'jepan'], '国家')
>>> x
{'china': '国家', 'england': '国家', 'jepan': '国家'}
# 在字典中没有的key,直接增加。存在的key进行修改
>>> x['america'] = '美国'
>>> x
{'china': '国家', 'england': '国家', 'jepan': '国家', 'america': '美国'}
4、删
# pop(key[, default])
# default参数,指定pop方法抛出异常时,输出指定内容。
>>> x
{'china': '国家', 'england': '国家', 'jepan': '国家'}
# pop一个不存在的键,抛出异常
>>> x.pop('美国')
Traceback (most recent call last):
File "<pyshell#179>", line 1, in <module>
x.pop('美国')
KeyError: '美国'
# pop方法返回key对应的value,同时在原字典中删除这个键值对
>>> x.pop('jepan')
'国家'
>>> x
{'china': '国家', 'england': '国家'}
# popitem()
# python 3.7之前,随机删除一个键值对。
# python 3.7(含)之后,删除最后一个键值对
>>> x = dict.fromkeys(['china', 'england', 'jepan'], '国家')
>>> x.popitem()
('jepan', '国家')
# del
# 可以删除字典某个键值对,也可删除整个字典对象
>>> x = dict.fromkeys(['china', 'england', 'jepan'], '国家')
>>> del x['jepan']
>>> x
{'china': '国家', 'england': '国家'}
>>> del x
>>> x
Traceback (most recent call last):
File "<pyshell#192>", line 1, in <module>
x
NameError: name 'x' is not defined
# clear()方法
# 清空整个字典对象的内容
>>> x = dict.fromkeys(['china', 'england', 'jepan'], '国家')
>>> x.clear()
>>> x
{}
>>>
5、查
# 直接查,key不存在,抛出异常
>>> x = dict.fromkeys(['china', 'england', 'jepan'], '国家')
>>> x['china']
'国家'
>>> x['america']
Traceback (most recent call last):
File "<pyshell#206>", line 1, in <module>
x['america']
KeyError: 'america'
# get(key[, default])
# 获取key的value,如果不存在,无返回值
# default参数,无返回值时指定输出的内容
>>> x.get('china')
'国家'
>>> x.get('america')
>>> x.get('america', 'Not found!')
'Not found!'
# setdefault(key[, default])
# 在字典中查找key,key存在返回它的value,不存在则给它赋值
>>> x.setdefault('america')
>>> x
{'china': '国家', 'england': '国家', 'jepan': '国家', 'america': None}
>>> x.setdefault('canada', '加拿大')
'加拿大'
>>> x
{'china': '国家', 'england': '国家', 'jepan': '国家', 'america': None, 'canada': '加拿大'}
6、items()、keys()、values()获取字典视图对象
# items()
# keys()
# values()
# 分别存储目标的键值视图,键视图和值视图,当目标发生变更时,视图对象同时发生变更
>>> x = dict.fromkeys(['china', 'england', 'jepan'], '国家')
>>> items = x.items(); keys = x.keys(); values = x.values()
>>> items; keys; values
dict_items([('china', '国家'), ('england', '国家'), ('jepan', '国家')])
dict_keys(['china', 'england', 'jepan'])
dict_values(['国家', '国家', '国家'])
>>> x.pop('jepan')
'国家'
>>> items; keys; values
dict_items([('china', '国家'), ('england', '国家')])
dict_keys(['china', 'england'])
dict_values(['国家', '国家'])
7、字典嵌套
# value可以是一个字典
>>> student = {'小明':{"语文":100, '数学':100, "英语":80}, '小丽':{"语文":100, '数学':100, "英语":80}}
>>> student
{'小明': {'语文': 100, '数学': 100, '英语': 80}, '小丽': {'语文': 100, '数学': 100, '英语': 80}}
>>> student['小明']['语文']
100
# value可以是一个序列
>>> student_2 = {'小明':[100, 100, 80], '小丽':[100, 100, 80]}
>>> student_2['小明'][0]
100
8、字典推导式
>>> x = dict(China = '中国', America = '美国', Canada = '加拿大')
>>> change_x = {value:key for key, value in x.items()}
>>> x; change_x
{'China': '中国', 'America': '美国', 'Canada': '加拿大'}
{'中国': 'China', '美国': 'America', '加拿大': 'Canada'}
>>> select_x = {value:key for key, value in x.items() if value == '中国'}
>>> select_x
{'中国': 'China'}
1669

被折叠的 条评论
为什么被折叠?



