天天看点

Python字典dict操作字典dict

字典dict

语法: {键1: 值1, 键2: 值2, 键3: 值3, …, 键n: 值n}

不能使用切片

说明:键值对: key-value

  • 字典和列表类似,都可以用来存储多个数据
  • 在列表中查找某个元素时,是根据下标进行的;字典中找某个元素时,是根据**‘名字’—key**(就是冒号:前面的那个值,例如上面代码中的’name’、‘id’、‘sex’)
  • 字典中的每个元素都由2部分组成,键:值。例如 ‘name’:‘班长’ ,'name’为键,'班长’为值
  • 键可以使用数字、布尔值、元组,字符串等不可变数据类型,但是一般习惯使用字符串,切记不能使用列表等可变数据类型
  • 每个字典里的key都是唯一的,如果出现了多个相同的key,后面的value会覆盖之前的value

    字典的元素是一个键值和value一一对应:key-value

    key的三个特点:

    1.唯一性

    2.是不可变类型,list,dict,set不可用

    3.无序

1.字典定义

d = {"name": "刘亦菲", "age": 33}
# d = {0: 1, 2: 3, (1,): 5}
print(d)

# 定义方法
d = dict(name='鹿晗', age=30)  # {'name': '鹿晗', 'age': 30}
print(d)
# zip()

d = dict(zip(['name', 'age'], ['邓超', 45]))  # {'name': '鹿晗', 'age': 30}
print(d)

d = dict([('a', 10), ('b', 20), ('c', 30)])
print(d)
           

2.查询—根据key指查询

print(d["name"])
# print(d["sex"])  # 不存在的key会报错

print(d.get('name'))
print(d.get('sex'))  # None,不会报错
print(d.get('sex', '男'))  # 如果sex存在值则取对应的值,否则取默认值'男'
key = "name"
print(d[key])
           

3.遍历

# 3.遍历
d = {"name": "刘亦菲", "age": 33}
'''
for k in d:  # 获取的是key
    print(k, d[k])
for k in d.keys():  # 获取的是key
    print(k, d[k])
'''
'''
for v in d.values():  # 获取value的值
    print(v)
'''
for k, v in d.items():   # 获取key和value的值
    print(k, v)

print(list(d.keys()))  # ['name', 'age']
print(list(d.values()))  # ['刘亦菲', 33]
print(list(d.items()))  # [('name', '刘亦菲'), ('age', 33)]
           

4.判断成员

# 成员
print('age' in d)  # 判断keys是在字典中存在
print('age'not in d)
           

5.添加与修改

# 增加
d = {'name': '霉霉', 'age': 33}
d['sex'] = '女'  # 如何没有这个key会在末尾添加
print(d)

# 改
d['sex'] = 'girl'
print(d)
           

6.删除

# d.pop('age')
# d.clear()  # 清空字典
# d.popitem()  # 默认删除最后一个
# print(d)
print()
           

7.将字典中的key与value交换位置

# 将字典的key和value交换
dict2 = {'a': 5, 'b:': 4, 6: 1}
print(dict2)
dict3 = {n: k for k, n in dict2.items()}  # 字典生成式
print(dict3)
           

可变类型

字典是属于可变类型,传递的是地址,如果不是使用copy() 函数复制赋值,而是用 == 赋值,那么赋值的两个字典是共用一个地址,那么对一个字典的修改,也会导致另一个字典的值发生改变

d = {"name": "刘亦菲", "age": 33}
print(d)  # {"name": "刘亦菲", "age": 33}
d2 = d
d2['name'] = '杨幂'
print(d2)  # {'name': '杨幂', 'age': 33}
print(d)  # {'name': '杨幂', 'age': 33}
           

对列表中的字典进行排序

sorted(stu_list, key=lambda n:n['num'])

sorted(stu_list, key=lambda n:n['score'])