字典定义:每个键值 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 之间的成员关系