python中字典
1.字典,python中的一种数据结构,以key ,value格式存储,是可变数据类型
2.字典的定义:key不能重复,字典的key 可以是字符串或整数
value可以是任意数据类型,可以重复,可以是字符串,列表,字典,元组,布尔值等
3.二维元组或列表可以直接转成字典
a = (('mac', 10), ('coffee', 20))
a = dict(a)
print(a)
# {'mac': 10, 'coffee': 20}
b = [['小米6', '2499'], ['P40', '3999']]
b = dict(b)
# print(b)
# {'小米6': '2499', 'P40': '3999'}
4.一维元组或列表转成字典,使用fromkeys方法可以对列表或元组进行去重,可以将一维元组或列表转成字典,排序会乱,跟set一样,按照哈希表进行排序
d = ('mac', 'coffee', 'mac')
c = {}
c = c.fromkeys(d)
print(c)
{'mac': None, 'coffee': None}
#给字典的key添加默认值
c = c.fromkeys(d,0)
print(c)
{'mac': 0, 'coffee': 0}
5.字典的取值
#1.根据key的名称去取,取不到会报错
j = {"a": 1, "b": 2}
print(j['a'])
# 1
#2.通过字典的get方法去取,取不到返回None,不会报错
j = {"a": 1, "b": 2}
print(j.get('b'))
#2
#取不存在的key,默认返回结果为None
print(j.get('d'))
#None
# 如果取不到key,返回结果为0
print(j.get('d', 0))
#0
6.字典的赋值,根据key的名称去改
j = {"a": 1, "b": 2}
j["b"] = 3
print(j)
{'a': 1, 'b': 3}
7.字典的循环
<1>. 通过keys去循环,取到所有的key:
dict1 = {"a": 1, "b": 2, "c": 3}
# for i in dict1.keys():
# print(i)
# a b c
<2>.通过values去循环,取到所有的value:
# for j in dict1.values():
# print(j)
# 1 2 3
<3>. 通过key , value一起循环:
for k ,v in dict1.items():
print(k)
print(v)
8.字典的方法:
<1>. del 慎用,删除字典
data = {"a": 1, "b": 2, "c": 3
#<1>.删除某个key:
# del data['a']
# print(data)
# {'b': 2, 'c': 3}
#<2>. del 字典 清除字典的内存地址,彻底清除字典
del data
print(data)
# NameError: name 'data' is not defined
<2>. 列表删除,remove方法,del也可以
data = [1, 2, 3, 4]
#1.根据索引去删除
del data[3]
print(data)
[1,2,3]
#2.使用remove方法删除,使用对象删除,也就是索引的值
data.remove(3)
print(data)
#[1, 2, 4]
<3>. pop 字典通过pop方法,根据key去弹出和删除
data = {"a": 1, "b": 2, "c": 3}
print(data.pop("c")
#3
print(data)
# {'a': 1, 'b': 2}
<4>. 更新字典的key
1.先弹出字典的key['c'],再将字典赋值'd'
data={"a":1,"b":2,"c":3}
data['d'] = data.pop('c')
print(data)
{'a': 1, 'b': 2, 'd': 3}
<5>.清空字典 删除字典的所有项或元素,保留空字典
# data = {"a": 1, "b": 2, "c": 3}
# data.clear()
# print(data)
# {}
<6>.fromkeys 方法
<1>.使用字典的fromkeys方法将列表转成成字典,并取出字典的keys,转成列表,由于key不能重复,转换的列表值不重复,排序会乱
# a = [1, 2, 1, 3, 1, 2]
# print(list(dict.fromkeys(a).keys()))
# [1, 2, 3]
<7>.update 字典的更新,可以把两个字典合并成一个,字典的key,如果有重复就替换,没有就追加
a = {"a": 1, "b": 2, "c": 3}
b = {"d": 4, "c": 5}
a.update(b)
print(a)
# {'a': 1, 'b': 2, 'c': 5, 'd': 4}
<8>.判断字典是否相等,必须是字典的长度,键,值相等
<9>.字典的排序:
#1.强行对字典进行排序,只会对key进行排序
a = {"a": 1, "b": 2, "c": 3}
print(sorted(a))
# ['a', 'b', 'c']
#2. items把字典转成多维元组,将多维元组进行排序的话,默认是按照第一项进行排序,排出的结果是个列表,里面套的元组
a = {"a": 1, "b": 2, "c": 3}
# print(sorted(a.items()))
# [('a', 1), ('b', 2), ('c', 3)]
#3. 按照字典的values进行排序,需要使用lamba,使用items转成多维元组,按多维元组的第二项进行排序,默认按照升序排序(reverse=False),如果要按照降序排序,则reverse=True
a = {"a": 1, "b": 2, "c": 3}
print(sorted(a.items(),key=lambda x: x[1],reverse=True))
# [('c', 3), ('b', 2), ('a', 1)
#小练习:把字典{'k3': 3, 'k2': 2, 'k1': 1}处理成字符串的形式: k1:1|k2:2|k3:3
c = {'k3': 3, 'k2': 2, 'k1': 1}
list = []
for k, v in c.items():
list.append(f'{k}:{v}')
print('|'.join(sorted(list)))