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')]
posted @ 2023-06-01 14:28  技术改变命运Andy  阅读(15)  评论(0编辑  收藏  举报