字典定义:每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号,分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
一、创建字典的几种方法总结
(1)创建空字典
dic = {} type(dic) # <type 'dict'>
(2)使用{}花括号方法,直接赋值创建字典
thisdict = { "brand": "Porsche", "model": "911", "year": 1963 } print(thisdict)
(3)使用dict()函数和关键字的方法创建字典
thisdict = dict(spam = 1, egg = 2, bar =3) print(thisdict) # {'spam': 1,
'egg': 2, 'bar': 3}
(4)使用dict()函数和二元组的列表创建
lis = [('spam', 1), ('egg', 2), ('bar', 3)] thisdict = dict(lis)
print(thisdict) # {'bar': 3, 'egg': 2, 'spam': 1}
(5)dict和zip结合创建
dic = dict(zip('abc', [1, 2, 3])) print(dic) # {'a': 1, 'c': 3, 'b': 2}
(6)通过字典推导式创建
dic = {i:2*i for i in range(3)} print(dic) # {0: 0, 1: 2, 2: 4}
(7)通过dict.fromkeys()创建,通常用来初始化字典, 设置value的默认值
dic = dict.fromkeys(range(3), 'x') print(dic) # {0: 'x', 1: 'x', 2: 'x'}
(8)其他方法
lis = ['x', 1, 'y', 2, 'z', 3] dic = dict(zip(lis[::2], lis[1::2])) print(dic)
# {'x': 1, 'y': 2, 'z': 3} lis[::2] # ['x', 'y', 'z'] lis[1::2] # [1, 2, 3]
二、查找字典元素
有两种方式:
a. dict[key] -> 若 key 值不存在,会报 KeyError 的错误 ; 若 key 值存在,返回 key 所对应的
value 值
c = {'语文': 90, '数学': 90, '英语': 75} print(c['英语']) # 75
b. dict.get(key, default) -> 若 key 不存在不会 报错, 会返回 default
c = {'语文': 90, '数学': 90, '英语': 75} print(c.get('英语')) print(c.get('没有')) # 75
# None
c.setdefault()根据键找到值,如果有这个键就返回值,如果没有就返回default参数,并添加新的键值对。
c = {'语文': 90, '数学': 90, '英语': 75} c.setdefault('英语',"100") print(c)
c.setdefault('物理',"100") print(c) # {'语文': 90, '数学': 90, '英语': 75} # {'语文': 90,
'数学': 90, '英语': 75, '物理': '100'}
总结:dict 字典根据 key 来查看 dict 中的数据 就相当于 list 中 要根据 index 来看其,相对应的数据。但是 dict
是无序的,所以导致没有 index 这一说法,只能根据 key
d.嵌套字典的查找元素
#字典的嵌套 d={'成绩':{'语文': 90, '英语': 75, '物理': '100'}} print(d['成绩']['物理'])
#嵌套字典,嵌套序列 d={'成绩':['语文', 90, '英语'], 75:['物理', '100']} print(d[75][0]) 100 物理
三、获取字典的键,值,键值对
dict.items() 、dict.keys() 、dict.values()是字典的视图对象,分别获取键值对,键和值。
c = {'语文': 90, '数学': 90, '英语': 75, '物理': '100'} key=c.keys() print("key:",key)
value=c.values() print("value:",value) item=c.items() print("item:",item) #
key: dict_keys(['语文', '数学', '英语', '物理']) # value: dict_values([90, 90, 75,
'100']) # item: dict_items([('语文', 90), ('数学', 90), ('英语', 75), ('物理', '100')])
四、 新增/修改
a.新增或修改单个元素:
dict[key] = value -> a. 当 key 值存在,就修改 key 所对应的 value 值
b. 当 key 值不存在,就 添一个键值对 {key: value}
x={"语文":73,"数学":75} x["英语"]=75 print(x) x["英语"]=60 print(x) print(x.get("英语",
80)) #{'语文': 73, '数学': 75, '英语': 75} #{'语文': 73, '数学': 75, '英语': 60} #60
b.修改对各字典元素:update()
c=dict(zip(["语文","数学","英语"],[73,75,75])) #update()修改多个
c.update({"语文":100,"数学":90}) print(c) # {'语文': 100, '数学': 90, '英语': 80}
五.、删除
两种方式:
a. mydict.pop(key,default),根据 key 值 来删除字典中的键值对。
c=dict(zip(["语文","数学","英语"],[73,75,75])) #update()修改多个 c.pop("语文") print(c)
{'数学': 75, '英语': 75}
b. mydict.popitem(),默认删除 dict 字典中的最后一个元素。
c=dict(zip(["语文","数学","英语"],[73,75,75])) #update()修改多个 c.popitem() print(c)
{'语文': 73, '数学': 75}
c.del删除字典某个元素,删除整个字典del c 会报错,切片式del c[1:2]删除也会报错:
c=dict(zip(["语文","数学","英语"],[73,75,75])) #update()修改多个 del c["语文"] print(c)
d.clear()清空字典:
c=dict(zip(["语文","数学","英语"],[73,75,75])) #update()修改多个 c.clear() print(c) {}
六、 遍历
四种方式:
a. 遍历dict得到key -> for key in mydict
favorite_numbers = {'eric': [3, 11, 19, 23, 42], 'ever': [2, 4, 5], 'willie':
[5, 35, 120], } # Display each person's favorite numbers. for name in
favorite_numbers: print( name) # 等同于 print( name.title()) # eric # ever # willie
b.直接遍历keys, mydict.keys() -> 现将 dict 字典中的 keys 用一个 list 封装好, 然后再遍历 -> for
key in mydict.keys()。
for name in favorite_numbers.keys(): print( name) # eric # ever # willie
c. 遍历 values -> mydict.values() -> 将 dict 字典中的 values 用一个 list 封装好,然后再遍历
-> for value in mydict.values。
favorite_numbers = {'eric': [3, 11, 19, 23, 42], 'ever': [2, 4, 5], 'willie':
[5, 35, 120], } for name in favorite_numbers.values(): print( name) #[3, 11,
19, 23, 42] #[2, 4, 5] #[5, 35, 120]
d. 遍历 key 与 values -> mydict.items() -> 先将 dict 中的 键值对 用 元组 tuple 封装好,然后在放到
list 中, 最后在遍历 -> for item in mydict.items()
5. 统计长度
总结:
len(mydict)
统计的是字典的 key 值的个数
6. 成员关系
总结:
'甜心' in mydict -> false
看的是属不属于 key ,是 key 之间的成员关系