字典
字典是列表以外Python中使用最灵活的内置数据类型,是一种可变的数据类型。
与列表的区别:
- 列表有序,字典无序;
- 列表通过索引(偏移)访问元素,字典通过键(key)访问元素。
dict={'name1':"cl",'age':"18",'id':"20190201"}
print(len(dict))
print(dict["age"])
#输出结果:
3
cl
基本格式
key: value----->键值对
dict={key1:value1,key2:value2,...,keyn:valuen}
值可以取任意数据类型,但键不可以,必须为不可变数据类型,即key必须可哈希。
可哈希----->不可变;不可哈希----->可变;
特点
- key: value,键值对之间用冒号连接
- key: value 组成字典的一个元素
- 键值对之间用逗号隔开(,)
- 整个字典用花括号包裹({})
字典的创建
#空字典:
dict={}
#创建多元素字典:
1、
dict={'name':"cl",'age':"18",'id':"20190201"}
print(dict)
2、
key1,key2,key3="name","age","id"
value1,value2,value3="cl",18,20190201
dict1={key1:value1,key2:value2,key3:value3}
print(dict1)
#输出结果:
{'name': 'cl', 'age': 18, 'id': 20190201}
#强转:
1、
dic=dict(name="cl",age=18,id=20190201)
print(dic)
#输出结果:
{'name': 'cl', 'age': 18, 'id': 20190201}
2、
zip()
key=("name","age","id")
value=("cl",18,20190201)
tp=tuple(zip(key,value))
print(tp,type(tp))
#输出结果:
(('name', 'cl'), ('age', 18), ('id', 20190201)) <class 'tuple'>
3、
dic=dict(zip(key,value))
print(dic,type(dic))
#输出结果:
{'name': 'cl', 'age': 18, 'id': 20190201} <class 'dict'>
4、
print(dict((('name', 'cl'), ('age', 18), ('id', 20190201))))
#输出结果:
{'name': 'cl', 'age': 18, 'id': 20190201}
通过字典的fromkeys创建字典
#格式:
dict.fromkeys(seq,val=None)
- 创建并返回一个字典
- val的值作为该字典中所有键对应的初始值;若不提供,默认为None。
dict=dict.fromkeys(["Tom","Jack","lucy"],666)
print(dict)
#输出结果:
{'Tom': 666, 'Jack': 666, 'lucy': 666}
字典的常见操作
(1)增
- 直接添加键值对(dic[key]=value)
- 通过使用变量名[“键”]=“值”:
- 如果key不存在,新建键值对(key: value)
- 如果存在,则更新值(value)
- 通过使用变量名[“键”]=“值”:
- dic. update(dict):把字典dict中的键值对(key: value)添加或更新到dic中
- 两个字典的键完全不同,则将dict的键值对全部添加到dic中
- 存在相同的键,则更新dic中对应的值
1、
dic={'id':'20190101','age':'19'}
dic["id"]=20190201
dic["name"]="cl"
dic["age"]=18
print(dic)
#输出结果:
{'id': 20190201, 'age': 18, 'name': 'cl'}
2、
dic.update({'class':'five'})
print(dic)
#输出结果:
{'id': 20190201, 'age': 18, 'name': 'cl', 'class': 'five'}
#例题:[{‘id’: ‘20190101’, ‘name’: ‘cl’, ‘age’: 18},
{‘id’: ‘20190201’, ‘name’: ‘sf’, ‘age’: 19},
…
{‘id’: ‘20190n01’, ‘name’: ‘…’, ‘age’: …}]
list=[]
while True:
dict = {}
id=input("请输入id:")
dict["id"]=id
name=input("请输入name:")
dict["name"]=name
age=int(input("请输入age:"))
dict["age"] = age
list.append(dict)
flag=int(input("如果继续请输入1,如果退出请输入0:"))
if flag==0:
break
print(list)
#输出结果:
[{'id': '20190101', 'name': 'cl', 'age': 18}, {'id': '201910201', 'name': 'sf', 'age': 19}, {'id': '20190301', 'name': 'fl', 'age': 18}]
(2)删
- dict. pop()
- 格式:dict. pop(key[, default])
- 如果key存在于dict中,删除并返回dict[value]
- 如果不存在,给出默认值则返回默认值;否则,报错
- 格式:dict. pop(key[, default])
dic1={'id': 20190201, 'age': 18, 'name': 'cl'}
print(dict1.pop('id'))
print(dict1.pop('job','student'))
#输出结果:
20190201
student
- dict. popitem()
- 随机删除一对键值对,并返回该键值对
- 有返回值的,元组
1、
dict1={'id': 20190201, 'age': 18, 'name': 'cl'}
print(dict1.popitem())
print(dict1)
#输出结果:
('name', 'cl')
{'id': 20190201, 'age': 18}
2、
key,value=dict1.popitem()
print(dict1)
#输出结果:
name cl
{'id': 20190201, 'age': 18}
- clear()
dict1.clear()
print(dict1)
- del
del dict1
del dict1[key]
(3)改
- 直接通过字典的key来更改value:
dic={'id': 20190201, 'age': 18, 'name': 'cl'}
dic['age']=20
print(dic)
#输出结果:
{'id': 20190201, 'age': 20, 'name': 'cl'}
- dict.setdefault():
- 键存在,不改动,返回字典中的值
- 不存在,在字典中添加相应的键值对,并返回对应的值
dict={'id': 20190201, 'age': 18, 'name': 'cl'}
print(dict.setdefault('id','20190301')) #键存在
print(dict.setdefault('hobby','Sing')) #键不存在
#输出结果:
20190201
Sing
{'id': 20190201, 'age': 18, 'name': 'cl', 'hobby': 'Sing'}
(4)查
- 直接通过字典的key访问value:
dic={'id': 20190201, 'age': 18, 'name': 'cl'}
print(dic['id']) #若存在返回对应的值
print(dic['hobby']) #若不存在,报错
- dict.get():访问value
- 格式:dict.get(key[,default])
- 不确定字典中是否存在某个键而又想对其进行操作,比如获取值------>get方法
- 当key不存在的时候,不会异常,而是返回None
print(dic.get('age',20))
print(dic.get('hobby'))
print(dic.get('hobby','Sing'))
#输出结果:
18
None
Sing
遍历
- dict.keys()
- dict.values()
- dict.items()
dic={'id': 20190201, 'age': 18, 'name': 'cl'}
print(dic.values())
print(dic.keys())
print(dic.items())
#输出结果:
dict_values([20190201, 18, 'cl'])
dict_keys(['id', 'age', 'name'])
dict_items([('id', 20190201), ('age', 18), ('name', 'cl')])
for key in dic.keys():
print(key,end=' ')
for value in dic.values():
print(value,end=' ')
for item in dic.items():
print(item,end=' ')
for key,value in dic.items():
print(key,":",value)
#输出结果:
id age name
20190201 18 cl
('id', 20190201) ('age', 18) ('name', 'cl')
id : 20190201
age : 18
name : cl
#例题
# li=[23,34,42,39,84,62,45,56,77,99]
# 输出{">=60":[],"<60":[]}
li=[23,34,42,39,84,62,45,56,77,99]
li1=[]
li2=[]
dict1={}
for i in li:
if i >= 60:
li1.append(i)
dict1[">=60"] = li1
else:
li2.append(i)
dict1["<60"] = li2
print(dict1)
#输出结果:
{'<60': [23, 34, 42, 39, 45, 56], '>=60': [84, 62, 77, 99]}