前言
字典dict是python中使用频繁的数据类型
一、什么是字典?
定义:在{ }中用逗号分隔开的多个元素,每个元素都以key : value的形式呈现,其中value可以是任意数据类型,但必须为不可变数据类型,通常使用字符串类型,方便对value进行描述。
示例:
info = {“name”:“alex”,“age”:23,“gender”:“male”} # 本质是 info = dict({“name”:“alex”,“age”:23,“gender”:“male”})
#或者
info1 = dict(name=“P”,age=23,gender=“male”) # {‘name’: ‘P’, ‘age’: 23, ‘gender’: ‘male’}
二、字典类型转换
转换1
info = dict([["name","andy"],("age",23)])
print(info) # {'name': 'andy', 'age': 23}
转换2 : {}.fromkeys会从元组中取出每一个值当key,然后与None组成key:None放进字典
info = {}.fromkeys(("name","age","gender","hobbies"),None)
print(info) # {'name': None, 'age': None, 'gender': None, 'hobbies': None}
三、字典的使用
dict = {
"name":"alex",
"age":23,
"gender":"male",
"hobby":["reading","music"]
}
1、按key存取值,可存可取可修改
取值
print(dict["name"]) # alex
print(dict['hobby'][1]) # music
对于赋值操作,如果key不存在于字典中,则新增key:value
dict["hometown"]="Henan"
print(dict) # {'name': 'alex', 'age': 23, 'gender': 'male', 'hobby': ['reading', 'music'], 'hometown': 'Henan'}
对于赋值操作,如果key存在于字典中,则修改key:value
dict["hometown"]="zhengzhou"
print(dict) # {'name': 'alex', 'age': 23, 'gender': 'male', 'hobby': ['reading', 'music'], 'hometown': 'zhengzhou'}
2.len(dict) 统计字典中元素的个数
print(len(dict)) # 4
3、成员运算 in 和 not in,判断某个key是否在字典中
print("name" in dict) # True
4、删除:pop()
括号内指定key来删除对应的key:value(“age”:23),并返回value值
v=dict.pop("age") # 通过指定key来删除key:value
print(dict) # {'name': 'alex', 'gender': 'male', 'hobby': ['reading', 'music']}
print(v) # 23
5、键key(),值value(),键值对itmes()
获取键key
print(dict.keys()) # dict_keys(['name', 'age', 'gender', 'hobby'])
获取值value
print(dict.values()) # dict_values(['alex', 23, 'male', ['reading', 'music']])
获取键值对item
print(dict.items()) # dict_items([('name', 'alex'), ('age', 23), ('gender', 'male'), ('hobby', ['reading', 'music'])])
6.循环
默认遍历key
for key in dict:
print(key)
name
age
gender
hobby
只遍历key
for key in dict.keys():
print(key)
遍历value
for key in dict.values(): #
print(key)
alex
23
male
['reading', 'music']
遍历键值对key:value
for key in dict.items():
print(key)
('name', 'alex')
('age', 23)
('gender', 'male')
('hobby', ['reading', 'music'])
7.get()
获取字典中对应key的value值
print(dict.get("name")) # alex
如果字典中没有对应的key,则返回None
print(dict.get("star")) #None
8.popitme() # 随机删除一组key:value,并返回值
item = dict.popitem() # 随机删除一组key:value
print(dict) # {'name': 'alex', 'age': 23, 'gender': 'male'}
print(item) # 返回值:('hobby', ['reading', 'music'])
9.update() 用新的字典更新旧的字典,有则修改,无则增加
dict.update({"Height":176,"Weight":"70kg","age":27})
print(dict) # {'name': 'alex', 'age': 27, 'gender': 'male', 'hobby': ['reading', 'music'], 'Height': 176, 'Weight': '70kg'}
10.fromkeys()
dict1 = dict.fromkeys([1,2,3],666)
print(dict1) # {1: 666, 2: 666, 3: 666}
11.setdefault()
key不存在则新增key:value对,并返回新增的值
res = dict.setdefault("heigit",175)
print(dict) # {'name': 'alex', 'age': 23, 'gender': 'male', 'hobby': ['reading', 'music'], 'heigit': 175}
print(res) # 175
key存在则不做修改,并返回原值
res = dict.setdefault("age",27)
print(dict) # {'name': 'alex', 'age': 23, 'gender': 'male', 'hobby': ['reading', 'music']}
print(res) # 23