字典定义:每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号,分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
一、创建字典的几种方法总结
(1)创建空字典
dic = {}
type(dic)
#
(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 之间的成员关系