字典dictionary

字典(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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容