字典
1.假如有一个列表:
li = [“Pyth”,“Java”,“C”]
li[0]=“Python”
li.sort()
2.假如统计学生信息,包括学号,姓名,年龄:
li = [[31502001,“xue1”,18],
[31502002,“xue2”,18],
…
31502nnn,“xuennn”,19]]
循环遍历,十分复杂
考虑字典
字典是列表以外Python中使用最灵活的内置数据类型
字典是一种可变的数据类型。
和列表的区别:
- 列表有序,字典无序
- 列表通过索引访问元素,字典通过键(key)访问元素
字典的基本格式:
dic = {key: value1,key2: value2,...,keyn: valuen}
值可以取任意数据类型,但键不可以,必须为不可变类型数据,即key必须可哈希
可哈希—>不可变
不可哈希—>可变
特点:
- 1.key: value ,键值对之间用冒号(:)连接
- 2.key: value 组成字典的一个元素
- 3.键值对直尖用逗号(,)隔开
- 4.整个字典用花括号{}包裹
字典的创建
空字典
dic = {}
print(type(dic))
<class 'dict'>
创建多元素字典
dic = {'小明':{'add':'杭州','phone':'110','age':18},
'小陈': {'add': '上海', 'phone': '120', 'age': 19}}
强转
dic = dict(id=2019,name='Tom',age=18)
print(dic)
{'id': 2019, 'name': 'Tom', 'age': 18}
zip()
key = ('id','name','age')
value = ('2019','Tom','18')
print(dict(zip(key,value)))
tp = tuple(zip(key,value))
print(tp,type(tp))
{'id': '2019', 'name': 'Tom', 'age': '18'}
(('id', '2019'), ('name', 'Tom'), ('age', '18')) <class 'tuple'>
通过字典的fromkeys方法创建字典
格式:
dict.fromkeys(seq,val=None)
- 创建并返回一个字典
- 以seq中的元素作为该字典的键
- val的值作为该字典中所有键对应的初始值;如不提供。默认为None。
dic = dict.fromkeys('Hello',6666)
print(dic)
{'H': 6666, 'e': 6666, 'l': 6666, 'o': 6666}
dic = dict.fromkeys(('Hello','Hi'),6666)
print(dic)
{'Hello': 6666, 'Hi': 6666}
fromkeys expected at most 2 arguments,所以此处Hello和Hi需要打包
字典的常见操作
增
- 直接添加键值对(dic[key] = value)
- 通过使用 变量名[‘键’] = ‘值’
- 如果key不存在,新建键值对(key: value)
- 如果存在,更新值(value)
- 通过使用 变量名[‘键’] = ‘值’
dic = {}
dic['键'] = '值'
dic['name'] = 'Tom'
dic['age'] = 18
dic['age'] = 19
print(dic)
{'键': '值', 'name': 'Tom', 'age': 19}
小测试,输入ID,NAME,AGE组成字典,输入Q结束,结果保存在列表中
key = ('id','name','age') li = [] while True: sr = input("输入id,name,age(以空格隔开,输入Q结束):") if sr == 'Q': break value = sr.split(' ') value[2] = int(value[2]) li.append(dict(zip(key,value))) print(li)key = ('id','name','age') li = [] while True: id = input('输入id:') if id == 'Q': break name = input('输入name:') age = int(input('输入age:')) value = (id,name,age) li.append(dict(zip(key,value))) print(li)li = [] while True: dic = {} id = (input('输入ID:')) if id =='Q': break name = input('输入name:') age = int(input('输入age:')) dic['id'] = id dic['name'] = name dic['age'] = age li.append(dic) print(li)
-
dict.update(dic)
把字典dic中的键值对(key: value)更新到dict中。
- 两个字典的键完全不同,则将dic的键值对全部添加至dict中
- 如果存在相同的键,则更新dict中对应的值
dic = {'job':'IT','hobby':'read'}
dict = {'id':31502286,'name':'Tom','age':20}
dict.update(dic)
print(dict)
{'id': 31502286, 'name': 'Tom', 'age': 20, 'job': 'IT', 'hobby': 'read'}
dic2 = {'job':'IT','hobby':'read','name':'Jack'}
dict = {'id':31502286,'name':'Tom','age':20}
dict.update(dic2)
print(dict)
{'id': 31502286, 'name': 'Jack', 'age': 20, 'job': 'IT', 'hobby': 'read'}
删
- dict.pop
- 格式:```dict.pop(key[,default])
- 如果key存在于dict中,删除并返回dict[key]
- 如果不存在,给出默认值则返回默认值,未给出默认值,报错
- 格式:```dict.pop(key[,default])
dict = {'id':31502286,'name':'Tom','age':20}
print(dict.pop('age'))
print(dict)
20
{'id': 31502286, 'name': 'Tom'}
dict = {'id':31502286,'name':'Tom','age':20}
print(dict.pop('age',23))
print(dict)
20
{'id': 31502286, 'name': 'Tom'}
dict = {'id':31502286,'name':'Tom','age':20}
print(dict.pop('job')) # 不存在 报错
- dict.popitem()
- 随机删除一对键值对(可视的最后一对)
- 有返回值,元组
dict = {'id':31502286,'name':'Tom','age':20}
print(dict.popitem())
key, value = dict.popitem()
print(dict)
print(key, value)
#执行了 两次删除
('age', 20)
{'id': 31502286}
name Tom
- del dict[key] / del dict
dict = {'id':31502286,'name':'Tom','age':20}
del dict['age']
print(dict)
{'id': 31502286, 'name': 'Tom'}
- dict.clear()
dict = {'id':31502286,'name':'Tom','age':20}
dict.clear()
print(dict)
{}
改
- 直接修改
dic = {'id':31502286,'name':'Tom','age':20}
dic['id'] = 31502288
print(dic)
- setdefault()
- 键存在,不改动,返回对应值
- 键不存在,在字典中添加对应的键值对,并返回对应的值
dic = {'id':31502286,'name':'Tom','age':20}
print(dic.setdefault('id','001'))
print(dic)
#键存在 则返回对应值 31502286.
31502286
{'id': 31502286, 'name': 'Tom', 'age': 20}
dic = {'id':31502286,'name':'Tom','age':20}
print(dic.setdefault('加入','001'))
print(dic)
#键不存在 则加入键值对 并返回值 001
001
{'id': 31502286, 'name': 'Tom', 'age': 20, '加入': '001'}
查
字典值的访问
- 通过key访问value
dic = {'id':31502286,'name':'Tom','age':20}
print(dic['id']) #键查询
print(dic['ID']) #键不存在,将报错
31502286
- dict.get() 访问value
- 语法格式 dict.get(key[,default])
- 不确定字典中是否存在某个键而又想对齐操作,比如获取值—>get方法
- 当key不存在的时候,返回None
dic = {'id':31502286,'name':'Tom','age':20}
print(dic.get('id'))
print(dic.get('Job'))
31502286
None
- 遍历
- dict.keys()
- dict.values()
- dict.items()
dic = {'id':31502286,'name':'Tom','age':20}
print(dic.keys())
print(dic.values())
print(dic.items())
dict_keys(['id', 'name', 'age'])
dict_values([31502286, 'Tom', 20])
dict_items([('id', 31502286), ('name', 'Tom'), ('age', 20)])
dic = {'id':31502286,'name':'Tom','age':20}
for key in dic.keys():
print(key,end=' ')
id name age
dic = {'id':31502286,'name':'Tom','age':20}
for value in dic.values():
print(value,end=' ')
31502286 Tom 20
dic = {'id':31502286,'name':'Tom','age':20}
for item in dic.items():
print(item,end=' ')
('id', 31502286) ('name', 'Tom') ('age', 20)
dic = {'id':31502286,'name':'Tom','age':20}
for key,value in dic.items():
print(key ,':' ,value)
id : 31502286
name : Tom
age : 20
本文详细介绍了Python字典的创建、操作及其实现原理。从空字典、多元素字典的创建,到通过fromkeys方法创建字典,再到字典的增、删、改、查等常见操作,全方位解析字典的使用。强调了字典的无序性和通过键访问元素的特点,并提供了实际操作示例。
3018

被折叠的 条评论
为什么被折叠?



