Python 学习日记第三篇 -- 字典
短信预约 -IT技能 免费直播动态提醒
一、字典
python中的字典不是序列,而是一种映射;不通过位置而是通过键存储。字典是可变的。
1、字典的映射操作
#字典的创建
>>> d1 = {'k1':'v1','k2':'v2'}
>>> d2 = dict(k1='v1',k2='v2')
使用{}定义字典,以key:value形式存储数据,在字典中key是唯一的
>>> one_dict = {'name':"jym",'age':23,'addr':'xinjiang'}
#通过key查找数据
>>> one_dict['name']
'jym
#修改
>>> one_dict['name'] = "Jym"
>>> print(one_dict)
{'name': 'Jym', 'age': 23, 'addr': 'xinjiang'}
>>> one_dict['age'] += 1
>>> print(one_dict)
{'name': 'Jym', 'age': 24, 'addr': 'xinjiang'}
#添加,直接赋值不在字典中的键,会创建该键值
>>> one_dict['job'] = "ops"
>>> print(one_dict)
{'name': 'Jym', 'age': 24, 'addr': 'xinjiang', 'job': 'ops'}
#字典的嵌套
>>> two_dict = {'name':{'first':"jy",'last':"meng"},'age':32,'addr':['sh','xj']}
>>> two_dict['name']['first']
'jy'
>>> two_dict['addr'][0]
'sh'
2、字典的方法
#清空字典
>>> two_dict.clear()
>>> print(two_dict)
{}
#删除方法一
>>> two_dict = {'name':{'first':"jy",'last':"meng"},'age':32,'addr':['sh','xj']}
>>> two_dict['name'].pop('first')
'jy'
>>> print(two_dict)
{'name': {'last': 'meng'}, 'age': 32, 'addr': ['sh', 'xj']}
#删除方法二
>>> del two_dict['name']['last']
>>> print(two_dict)
{'name': {}, 'age': 32, 'addr': ['sh', 'xj']}
#获取字典中value,使用get方法好处是如果你要获取的key值不存在,不报错,默认返回None,可自行给值
>>> get_dict = two_dict.get('age')
>>> print(get_dict)
32
>>> two_dict = {'name':{'first':"jy",'last':"meng"},'age':32,'addr':['sh','xj']}
>>> print(two_dict.get('job'))
None
>>> print(two_dict.get("job",'replace'))
replace
#通过一个字典更新另一个字典,如果两个字典键值相同,那么以要被更新的字典为准
>>> two_dict.update(one_dict)
>>> print(two_dict)
{'name': 'Jym', 'age': 24, 'addr': 'xinjiang', 'job': 'ops'}
#将字典转变为列表(少用)
>>> print(two_dict)
{'name': 'Jym', 'age': 24, 'addr': 'xinjiang', 'job': 'ops'}
>>> print(two_dict.items())
dict_items([('name', 'Jym'), ('age', 24), ('addr', 'xinjiang'), ('job', 'ops')])
#取字典的values值
>>> print(two_dict.values())
dict_values(['Jym', 24, 'xinjiang', 'ops'])
#取字典的keys值
>>> print(two_dict.keys())
dict_keys(['name', 'age', 'addr', 'job'])
#判断key值是否在字典中
>>> 'name' in two_dict
True
#取一个key值,如果存在,即取出,如果不存在,就在字典中加入该kv值
>>> print(two_dict.setdefault('name'))
Jym
>>> print(two_dict.setdefault('name1',"newkv"))
newkv
>>> print(two_dict)
{'name': 'Jym', 'age': 24, 'addr': 'xinjiang', 'job': 'ops', 'name1': 'newkv'}
#给定列表,将列表中的值取出作为key生成字典
>>> print(dict.fromkeys([1,2,3,4],'newvalue'))
{1: 'newvalue', 2: 'newvalue', 3: 'newvalue', 4: 'newvalue'}
#随机删除字典中的kv值(慎用)
>>> two_dict.popitem()
('name1', 'newkv')
>>> print(two_dict)
{'name': 'Jym', 'age': 24, 'addr': 'xinjiang', 'job': 'ops'}
>>> two_dict.popitem()
('job', 'ops')
>>> print(two_dict)
{'name': 'Jym', 'age': 24, 'addr': 'xinjiang'}
3、字典排序
第一种方法
#将字典的key值取出换为列表存储
sort_list = list(id_db.keys())
#使用列表的方法排序
sort_list.sort()
#按照顺序打印字典
for key in sort_list:
print(key,id_db[key])
结果:
C:\Python36\python36.exe C:/Users/Administrator/PycharmProjects/cto3/day2/dictionary.py
659001199601105413 {'name': 'jonny', 'age': 18, 'addr': 'xj'}
659001199701105413 {'name': 'david', 'age': 17, 'addr': 'sh'}
659001199801105413 {'name': 'george', 'age': 16, 'addr': 'gz'}
第二种方法
for key in sorted(id_db):
print(key,id_db[key])
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341