字典的常用操作python

1、创建字典

字典的键唯一,值不唯一
  • 空字典

dict1 = dict() # {}

  • 直接赋值

dict2 = {“name”: “echo”, “age”: 18} # {“name”: “echo”, “age”: 18}

  • 直接将列表的元组转换为键值对,字典的value也可以是list

dict3 = dict([(1, 2), (3, 4), (“list”, [5, 6, 7])]) # {1: 2, 3: 4, ‘list’: [5, 6, 7]}

  • fromkeys()函数

seq = [“a”, “b”, “c”]
dicts = dict.fromkeys(seq, 10) # {‘a’: 10, ‘b’: 10, ‘c’: 10}

2、添加键值对

  • 添加新键值对

dict1[1] = 2 # [1:2]

  • 修改键值对

dict2[“age”] = 24 # {“name”: “echo”, “age”: 24}

  • 将dict2中的元素添加到dict1中

dict1.update(dict2) # {1: 2, ‘name’: ‘echo’, ‘age’: 24}

3、访问字典

3.1 访问字典中的值

  • 直接访问,如果字典中没有这个键会报错

print(dict1[‘name’]) # echo

  • get()函数,字典中没有此键也不会报错

dict1.get(‘name’) # echo

  • 访问字典里的所有值

print(dict1.values()) # [2, ‘echo’, 24]

3.2 访问字典中的键

  • 通过value返回key。提供一种思路,因为value不唯一,所以返回的是一个列表

key1 = list(dict1.keys())[list(dict1.values()).index(24)] # age 返回的是value=24多对应的key

  • 访问所有键,以列表返回一个字典的所有键

print(dict1.keys()) # [1, ‘name’, ‘age’]

3.3 同时访问键值,以列表形式返回可遍历的(键,值)元组数组

print(dict1.items()) # [(1, 2), (‘name’, ‘echo’), (‘age’, 24)]
for k, v in dict1.items():
print(“k:v”, k, v)

4、 删除字典

  • 删除某一个键值对

del dict1[1] # 删除key=1的键值对
print(dict1.pop(‘name’)) # 删除key=‘name’的键值对,返回值是键所对应的值
print(dict1.popitem()) # (‘age’, 24) 返回并删除字典中的最后一对键值对

  • 清空字典

dict1.clear() # 变成空字典

  • 从内存中删除整个字典

del dict1 # 再调用字典dict1会报错

5、合并两个字典

  • 方法一、updata函数

dict2.update(dict3) # 将dict3合并到dict2中

  • 方法二

dict4 = {**dict2, **dict3} # {‘name’: ‘echo’, ‘age’: 24, 1: 2, 3: 4, ‘list’: [5, 6, 7]}

6、字典解析

  • 生成字典

dict5 = {k: random.randint(0, k + 1) for k in range(10)} # {0: 0, 1: 1, 2: 0, 3: 3, 4: 3, 5: 1, 6: 3, 7: 6, 8: 5, 9: 2}

  • 交换dict5的键值

dict6 = {v: k for k, v in dict5.items()} # {1: 5, 2: 1, 4: 3, 5: 9,3: 7, 9: 8} # 因为key不能重复,所以有些key被覆盖了

7、整体代码

def dicttest():
    """
    字典的常用操作
    """

    # 1、创建字典:键唯一,值不唯一
    # 空字典
    dict1 = dict()  # {}
    # 直接赋值
    dict2 = {"name": "echo", "age": 18}  # {"name": "echo", "age": 18}
    # 直接将列表的元组转换为键值对,字典的value也可以是list
    dict3 = dict([(1, 2), (3, 4), ("list", [5, 6, 7])])  # {1: 2, 3: 4, 'list': [5, 6, 7]}
    # fromkeys()函数
    seq = ["a", "b", "c"]
    dicts = dict.fromkeys(seq, 10)  # {'a': 10, 'b': 10, 'c': 10}

    # 2、添加键值对
    # 添加新键值对
    dict1[1] = 2  # [1:2]
    # 修改键值对
    dict2["age"] = 24  # {"name": "echo", "age": 24}
    # 将dict2中的元素添加到dict1中
    dict1.update(dict2)  # {1: 2, 'name': 'echo', 'age': 24}
    print(dict1)

    # 3、访问字典
    # 3.1 访问字典中的值
    # 直接访问,字典中没有这个键会报错
    print(dict1['name'])  # echo
    # get()函数,字典中没有此键也不会报错
    dict1.get('name')  # echo
    # 访问字典里的所有值
    print(dict1.values())  # [2, 'echo', 24]
    # 3.2 访问字典中的键
    # 通过value返回key,提供一种思路,因为value不唯一,所以返回的是一个列表
    key1 = list(dict1.keys())[list(dict1.values()).index(24)]  # age
    # 访问所有键,以列表返回一个字典的所有键
    print(dict1.keys())  # [1, 'name', 'age']
    # 3.3 同时访问键值,以列表形式返回可遍历的(键,值)元组数组
    print(dict1.items())  # [(1, 2), ('name', 'echo'), ('age', 24)]
    for k, v in dict1.items():
        print("k:v", k, v)

    # 4、 删除字典
    # 删除某一个键值对
    del dict1[1]
    print(dict1.pop('name'))  # 返回值是键所对应的值
    print(dict1.popitem())  # ('age', 24) 返回并删除字典中的最后一对键值对
    # 清空字典
    dict1.clear()
    # 从内存中删除整个字典
    del dict1

    # 5、合并两个字典
    dict2.update(dict3)
    dict4 = {**dict2, **dict3}  # {'name': 'echo', 'age': 24, 1: 2, 3: 4, 'list': [5, 6, 7]}

    # 6、字典解析
    dict5 = {k: random.randint(0, k + 1) for k in
             range(10)}  # {0: 0, 1: 1, 2: 0, 3: 3, 4: 3, 5: 1, 6: 3, 7: 6, 8: 5, 9: 2}
    # 交换dict5的键值
    dict6 = {v: k for k, v in dict5.items()}  # {1: 5, 2: 1, 4: 3, 5: 9, 3: 7, 9: 8} 因为key不能重复,所以有些key被覆盖了
    print(dict6)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值