数据结构-字典

字典介绍

存放具有映射关系的数据,如一个班级内各个同学的姓名和年龄,可以用两个列表来分别进行存储,用索引来建立联系,也可以用一个字典来进行存储。
字典由两部分组成,分别为键(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里每个元素都是原键值构成的元组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值