字典介绍
存放具有映射关系的数据,如一个班级内各个同学的姓名和年龄,可以用两个列表来分别进行存储,用索引来建立联系,也可以用一个字典来进行存储。
字典由两部分组成,分别为键(key)和值(value),由于需要通过key来访问value,所以字典中的key不能重复。同时,字典中的key要求不能改变,因此list不能作为字典的键(元组可以作为键)
字典创建方法
d1 = {'name': 'jason', 'age': 20, 'gender': 'male'}
d2 = dict({'name': 'jason', 'age': 20, 'gender': 'male'})
d3 = dict([('name', 'jason'), ('age', 20), ('gender', 'male')])
d4 = dict(name='jason', age=20, gender='male')
d1 == d2 == d3 ==d4
True
也可以定义一个空字典,再采用d[name]=jason
的方法不断进行赋值
字典访问
字典访问克制直接通过key来访问,如
d = {'name': 'jason', 'age': 20}
d['name']
'jason'
也可以使用get(key,default)来进行索引,
d = {'name': 'jason', 'age': 20}
d.get('name')
'jason'
d.get('location', 'null') #default值为null,如果该键值对不存在,返回default值(null)
'null'
判断是否有某键:
d = {'name': 'jason', 'age': 20}
'name' in d
True
'location' in d
False
遍历:
d = {'name': 'jason', 'dob': '2000-01-01', 'gender': 'male'}
for k in d: # 遍历字典的键
print(k)
name
dob
gender
for v in d.values(): # 遍历字典的值
print(v)
jason
2000-01-01
male
for k, v in d.items(): # 遍历字典的键值对
print('key: {}, value: {}'.format(k, v))
key: name, value: jason
key: dob, value: 2000-01-01
key: gender, value: male
增删更新
d = {'name': 'jason', 'age': 20}
d['gender'] = 'male' # 增加元素对'gender': 'male'
d['dob'] = '1999-02-01' # 增加元素对'dob': '1999-02-01'
d
{'name': 'jason', 'age': 20, 'gender': 'male', 'dob': '1999-02-01'}
d['dob'] = '1998-01-01' # 更新键'dob'对应的值
d.pop('dob') # 删除键为'dob'的元素对
'1998-01-01'
d
{'name': 'jason', 'age': 20, 'gender': 'male'}
排序
d = {'b': 1, 'a': 2, 'c': 10}
d_sorted_by_key = sorted(d.items(), key=lambda x: x[0]) # 根据字典键的升序排序
d_sorted_by_value = sorted(d.items(), key=lambda x: x[1]) # 根据字典值的升序排序
d_sorted_by_key
[('a', 2), ('b', 1), ('c', 10)]
d_sorted_by_value
[('b', 1), ('a', 2), ('c', 10)]
这里返回的是一个list,list里每个元素都是原键值构成的元组。