字典(dictionary)
- 字典可看作是键(key)与值(value)之间的一系列一一对应关系。
- 字典和列表相似,但是列表由整数作为索引,字典由key作为索引。
- 字典中的key是没有固定顺序的,列表索引为0、1、2……有顺序。
- 列表和字典都可以通过 [ ] 进行选择,更新,和删除
- 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 } - 键必须是唯一的,但值则不必。
- 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
- 字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
- 两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
2)键必须不可变,所以可以用数,字符串或元组充当,所以用列表就不行
在一对一的查找方面,字典比列表更方便
countries and captials 是两个列表,记录了欧洲的一些国家及其对应的首都
countries = ['spain', 'france', 'germany', 'italy'] #国家
capitals = ['madrid', 'paris', 'berlin', 'rome'] #首都
打印德国首都
ind_ger = countries.index("germany") # 先获取德国对应的数字索引
print(capitals[ind_ger]) #索引需用到方括弧
用字典可以更好的实现这个功能
定义字典europe
europe = {'spain':'madrid', 'france':'paris','germany':'berlin','italy':'rome'}
print(europe['germany'])
获取字典的key和values
用keys()方法获取字典的索引
In [1]: europe.keys()
Out[1]: dict_keys(['spain', 'france', 'germany', 'italy'])
用values()方法获取字典的值
In[2]:europe.values()
Out[2]:dict_values(['madrid', 'paris', 'berlin', 'rome'])
用items()方法获取 key-value 键值对
In[3]:europe.items() # 每个元素是元组
Out[3]:dict_items([('spain', 'madrid'), ('france', 'paris'), ('germany', 'berlin'), ('italy', 'rome')])
通过键 key 获取 value 值
输出france对应的值
europe['france']#用的是方括弧
我们也可以使用 get() 方法来获取key对应的值
europe.get('france')#用的是圆括弧
检查某个索引是否在字典里
'britain' in europe
当key不在字典中时,使用 [ ] 将出错
europe['britain']
KeyError Traceback (most recent call last)
<ipython-input-16-df76e5bbdd8d> in <module>()
1 # 当key不在字典中时,使用 [ ] 将出错
----> 2 europe['britain']
KeyError: 'britain
如果key不在字典里,get方法默认返回None
europe.get('britain')
也可以自定义返回值,如果key不在字典里,返回‘Unknown’
europe.get('britain', 'Unknown')
字典的增删改
增加新的键-值对
europe['britain'] = 'london'
europe
注意这里的输出顺序和我们输入的顺序不一致,也再一次说明了字典是无序的
{'britain': 'london',
'france': 'paris',
'germany': 'berlin',
'italy': 'rome',
'spain': 'madrid'}
字典的值是可修改的
europe['britain'] = 'London'#把london首字母大写
print(europe)
{'spain': 'madrid', 'france': 'paris', 'germany': 'berlin', 'italy': 'rome', 'britain': 'London'}
删除某个键-值对
del(europe['britain'])
print(europe)
{'spain': 'madrid', 'france': 'paris', 'germany': 'berlin', 'italy': 'rome'}
作业:
字典的值可以是字典本身, 以提供更多信息,例如:
europe = { 'spain': { 'capital':'madrid', 'population':46.77 },
'france': { 'capital':'paris', 'population':66.03 },
'germany': { 'capital':'berlin', 'population':80.62 },
'norway': { 'capital':'oslo', 'population':5.084 } }
1 打印法国首都
2 加入意大利(italy)的首都(roma)和人口(population 59.83)
1.europe.get('france').get('capital')
europe['france']['capital']
2.europe['italy']={'capital': 'rome', 'population': 59.93}
europe
网友评论