2-1-6python语法基础--基础-数据类型-字典
python字典的使用-必须要彻底掌握!
字典的curd
字典的创建
dict1={"name":'andy',"age":18}
# 注意:字典的key必须是唯一的,值可以不是唯一的,
# 字典的特性
# 字典的键必须不可变,所以可以是数字,字符串,元组,但是列表就不行,
# fromkeys()
seq=['name','age']
dict3=dict.fromkeys(seq,10) # 创建一个字典,以序列中的元素作为键,第二个参数是默认的值,不写默认是none print(dict3) # {'name': 10, 'age': 10}
字典的查询
# 访问字典里的值
print(dict1['name']) # 注意这种方式是根据key访问值,但是这不是切片,字典没有切片
# get()
print(dict1.get('name','NAN')) # get() 函数返回指定键的值,如果值不在字典中返回默认值。
# print(dict1['name2']) # 这种切片的方式会如果没有这个键会报错,所以一般是使用get的方式取值,不报错,
dict1={"name":'andy',"age":18}
# dict1.keys()
dict1_key=dict1.keys()
print(dict1_key) # dict_keys(['name', 'age'])
print(type(dict1_key)) # <class 'dict_keys'>
print(list(dict1_key)) # 可以转换为列表,
# dict1.items()
dict1_items=dict1.items()
print(dict1_items) # 返回的是列表形式,里面的元素都是键值对构成的元组
# dict1.values()
dict1_values=dict1.values()
print(dict1_values) # 返回一个迭代器,可以使用 list() 来转换为列表
更新字典的值
dict1['age']=20
print(dict1)
# 往字典里面新增新的值
dict1['sex']='boy'
print(dict1)
# 所以也就是说如果有值就是修改,没有值就是新增,
dict1={"name":'andy',"age":18}
# copy()
dict2=dict1.copy() # 返回一个字典的浅复制
print(dict2)
dic2 = {"name":"test"}
dic.update(dic2) # 合并两个字典
# dic = {"name":"test","age":123}
删除字典的值
# 删除某一个元素
dic = {"name":"andy","age":123}
del dic["name"] # 删除键
# dic = {"age":123}
dict1.clear() # 清空字典的值
del dict1 # 删除整个字典,
# dict1.pop()
dict1_pop=dict1.pop('name2','默认值') # 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值
print(dict1_pop)
字典排序
# python对字典进行排序
# 对python中字典类型的数据进行排序的方法如下:
# 方法一:
# key使用lambda表达式取value进行排序(reverse控制是否逆序)
dict = {'a': 1, 'b': 4, 'd': 2, 'e': 12}
a = sorted(dict.items(), key=lambda x: x[1]) # lambda x: x[1] 取元组的第二个值
a1 = sorted(dict.items(), key=lambda x: x[1], reverse=True)
print(a)
print(a1)
# 结果为:
# [('a', 1), ('d', 2), ('b', 4), ('e', 12)]
# [('e', 12), ('b', 4), ('d', 2), ('a', 1)]
# 同样的,我们也可以key使用lambda表达式取key进行排序,仅需改为lambda x: x[0]
# 方法二:
# 使用operator的itemgetter进行排序
# 背景:operator.itemgetter(*items):返回一个可调用对象,用于从运算对象中获取元素,其实是采用运算对象的_getitem_()方法。如果指定了多个项目,返回一个元组形式。
# import operator
# a = operator.itemgetter(1)
# ans = a('abcdef')
# print(ans)
# 输出结果为:b
# 对字典进行排序
import operator
dic = {'a': 1, 'b': 4, 'd': 2, 'e': 12}
a = sorted(dic.items(), key=operator.itemgetter(1)) # value
a1 = sorted(dic.items(), key=operator.itemgetter(0)) # key
a2 = sorted(dic.items(), key=operator.itemgetter(0), reverse=True)
print(a)
print(a1)
print(a2)
# 结果为:
# [('a', 1), ('d', 2), ('b', 4), ('e', 12)]
# [('a', 1), ('b', 4), ('d', 2), ('e', 12)]
# [('e', 12), ('d', 2), ('b', 4), ('a', 1)]
# 方法三:
# 将key和value分装成元组,再进行排序
dic = {'a': 1, 'b': 4, 'd': 2, 'e': 12}
a = zip(dic.keys(), dic.values())
b = zip(dic.values(), dic.keys())
c = sorted(a) # 也可以加reverse
d = sorted(b)
print(c)
print(d)
# 结果为:
# [('a', 1), ('b', 4), ('d', 2), ('e', 12)]
# [(1, 'a'), (2, 'd'), (4, 'b'), (12, 'e')]
技术改变命运