目录
(3) setdefault方法(可以不改变键的原值,而是增加值)
一、创建字典的方式
1. 通过{}来创建字典
#创建空字典
a = {}
# 直接赋值创建。注意key都要加引号
a = {'name':'张三','age':18,'address':"江苏"}
2. 通过dict()来创建字典
#创建空字典
a = dict()
# 不是key:value形式,key也没有引号,而是key = value
a = dict(name='张三',age=18,address="江苏")
# 键值对在列表中写成元组的形式
a = dict([('name',"张三"),("age",18),("address","江苏")])
3. 通过zip()映射函数来创建字典
# 先写key,再写value,
# key和value都存入列表或元组中,不是字典中
a = ('name','age','address')
b = ['张三',18,"江苏"]
d = dict(zip(a,b)) # zip(b,a)键值对反过来
4. 通过二维元组列表创建
list = [('spam', 1), ('egg', 2), ('bar', 3)]
dic = dict(list)
print(dic)
>>>{'bar': 3, 'egg': 2, 'spam': 1}
5. 通过字典推导式创建
dic = {i:2*i for i in range(3)}
print(dic)
>>>{0: 0, 1: 2, 2: 4}
k = ['key1', 'key2', 'key3']
v = ['value1', "value","value3"]
dic = { i:v[k.index(i)] for i in k } #键为i,i in k;值为v,通过i在k中的索引来映射关联取值
print(dic)
>>>{'key1':'value1','key2':'value2','key3':'value3'}
6. 通过fromkeys创建值为空的字典
e = dict.fromkeys(['name','age','address'])
print(e)
>>>{'name': None, 'age': None, 'address': None}
7. 更新合并字典
字典 update() 函数把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里。
#update更新合并字典
dict1 = {'Name': 'Runoob', 'Age': 7}
dict2 = {'Name': 'Quasi' }
dict1.update(dict2) #2个字典有相同的键,则更新字典
print ("更新字典dict: ", dict1)
>>>更新字典dict: {'Name': 'Quasi', 'Age': 7}
dict3 = {'Sex': 'female' }
dict1.update(dict3) #2个字典有不同的键,则合并字典
print ("合并字典dict: ", dict1)
>>>合并字典dict: {'Name': 'Runoob', 'Age': 7, 'Sex': 'female'}
#合并字典
k = {'key1':'value1', 'key2':"value2"}
v = {'key3':"value3"}
dic = dict(k,**v)
print(dic)
>>>{'key1':'value1', 'key2':,value2','key3':'value3'}
8. 其他方式
#将列表切片,然后通过映射函数创建
list = ['x', 1, 'y', 2, 'z', 3]
dic = dict(zip(list[::2], list[1::2]))
print(dic)
>>>{'y': 2, 'x': 1, 'z': 3}
参考链接:
Python中列表、元组、字典的创建方式_陈同学-CSDN博客_python用元组创建字典
https://www.jb51.net/article/157029.htm
python之从列表或元组创建字典_GrofChen的博客-CSDN博客_python元组创建字典
二、提取字典的键、值及字典的遍历
1. 取出该字典所有的键
- key_list = my_dict.keys() 返回的是列表
key_list = my_dict.keys()
print(list(key_list))
- 使用内置函数set(), 将其转换为集合数据结构. 集合,其实可以理解为只有键的字典:
item = {"name": "lowman", "age": 27}
data = set(item)
print(data)
2. 取出该字典所有的值
- value_list = my_dict.values() 返回的是列表
my_dict = dict(name="lowman", age=45, money=998, hourse=None)
value_list = my_dict.values()
print(list(value_list))
注意:在python2环境中这两个方法返回的是列表,但是在python3环境下返回的却是迭代器,如果希望通过下标直接取到需要的元素,可以通过list()方法将其先转化为列表,再进行取值.
3. 取出字典某个键的值
- value = my_dict["key"] 这样取值的话如果没有这个键就会抛出异常
4. 安全地取出字典某个键的值get()
- value = my_dict.get("key") 这样取值的话如果没有这个键就返回None。原字典不变
- value = my_dict.get("key", 默认值)也可以自定义一个默认值进行返回
5. 字典的setdefault()方法
返回字典键的值,若键不存在则添加键。和 get()方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。如果存在,返回字典中键的值,不会修改字典的值。
a='aabbbccccddddd111111222'
dic=dict()
for i in set(a):
dic.setdefault(a.count(i),[]).append(i)
#向字典dic中添加键,并设默认值为空列表。向值列表中添加值,
#相当于给键增加值。等同于以下两行代码:
#val=dic.setdefault(a.count(i),[]) #获取字典键的值,不存在则添加键,默认值为空列表
#val.append(i) #向键的值中添加元素
print(dic)
print('出现最多次数:%d次,是字符%s'%(max(dic),dic[max(dic)]))
setdefault()和get()的区别:
setdefault 如果不存在会在原字典里添加一个 key:default_value 并返回 default_value。
get 找不到 key 的时候不会修改原字典的键,只返回 default_value。
若要修改字典 dic.setdefault(key,default_value) 等同于 dic[key] = dic.get(key,default_value)。
6. 遍历字典
- 遍历字典的键
for item in my_dict:
print(item) #取出的是字典的键
for key in my_dict.keys():
print(key)
- 遍历字典的值
for value in my_dict.values():
print(value)
- 使用字典对象的items()
for item in my_dict.items():
print(item) #返回值为可遍历的“键-值对”元组列表
for key, value in my_dict.items():
print(key,value) #直接获取到每个键和值
三、添加、修改和删除字典元素
1、添加
-方法一:直接添加,给定键值对
-方法二:使用update方法
-方法三:使用setdefault方法
(1) 直接添加
#直接添加键值对
dictionary[key]=value #键不存在时,则添加;键存在时,则修改;
(2) update方法
#update方法添加、修改字典元素
#传入一个字典
d.update({'k1':1,'k2':2}) #字典d中不存在k1键,则添加;否则,修改。
#传入关键字
d.update(k1=1,k2=2)
#传入一个包含元组的列表
d.update([(k1,1),(k2,2)]) #在字典d中添加k1,k2键值对
(3) setdefault方法(可以不改变键的原值,而是增加值)
#setdefault方法添加键的值
d.setdefault(key,[]).append(listname[i]) #添加键key,值为列表。向值列表中添加值。
2、修改字典值
#修改字典值
d[key]=value #键存在,则修改值;不存在,则添加键值对
3、 删除字典的键值对
-方法一:del函数
-方法二:pop函数
-方法三:clear函数
(1) del函数
my_dict = {"name":"lowman", "age":12}
del my_dict["name"] #这样就把整个键值对给删除掉了
(2) pop函数
#使用pop函数,并返回值
aa={'人才': 60, '英语': 'english', '价格': 100, 'hhh': 'gogogo'}
vv = aa.pop('人才')
print(vv)
>>>60
print(aa)
>>>{'英语': 'english', '价格': 100, 'hhh': 'gogogo'}
(3) clear函数
# clear方法,删除所有
aa.clear()
print(aa) # {},为空
参考链接: