python-(4-4)数据类型的应用(字典)

1.定义

字典是以键值对的形式存储数据{key1:value1, key2:value2}

与列表查询数据相似,只不过将索引换成了key

在这里插入图片描述
字典的key必须是可哈希的数据类型,即不可变。
字典的value可以是任何数据类型。

2.增删改查

1.增加和修改元素

创建空字典,添加新元素

dic = dict()
dic["篮球"] = "NBA"
dic["公牛队"] = "乔丹"
print(dic)

就可以得到字典的内容:{'篮球': 'NBA', '公牛队': '乔丹'}

如果想要修改公牛队对应的值,直接替换即可

dic["公牛队"] = "罗德曼"
print(dic)

可以得到修改后的字典数据:{'篮球': 'NBA', '公牛队': '罗德曼'}

添加元素除了上述方法,还可以用其他操作:

dic.setdefault("FMVP", "詹姆斯")

最终会添加新的键值对:{'篮球': 'NBA', '公牛队': '罗德曼', 'FMVP': '詹姆斯'}
但要注意的是,这个方法只能用来创建新的键值对,而不能修改原来key对应的value
此处setdefault的意思是设置默认值,仅针对还未创建的键值,表示新建的元素。

在这里插入图片描述

2-1 删除元素

存在数据:dic = {'篮球': 'NBA', '公牛队': '罗德曼', 'FMVP': '詹姆斯'}
删除'篮球': 'NBA',

dic.pop('篮球')

删除key即可

2-2 循环删除元素

存在数据:dict = { "张三": "MVP", "李四": "FMVP", "张五": "DPOY", "王六": "AMVP" }

需求:批量删除姓张的键值对

# 存在的数据
dict = {
    "张三": "MVP",
    "李四": "FMVP",
    "张五": "DPOY",
    "王六": "AMVP"
}

# 空的临时列表,存储即将删除的姓张的人名"key"
tmp = []

# 遍历字典的所有key
for key in dict:

    # 如果key是姓张的
    if key.startswith("张"):

        # 将姓张的key存储在临时列表tmp中
        tmp.append(key)

# 遍历临时列表,里面都是姓张的key
for name in tmp:

    # 删除字典中姓张的key和value
    dict.pop(name)

# 打印结果
print(dict)

3.查询元素

方法一:
直接通过字典的key就可以查询对应的键值

print(dic['公牛队'])

这种查询方法,如果查询的key不存在,程序会报错。
确定key没问题,就可以用这种方法。

方法二:

print(dic.get('公牛队'))

这种查询方法,如果查询的key不存在,会返回None
不确定key的时候,用此方法。

补充说明,使用方法二,会给用户一个更好的体验,而不是直接报错。

dic = {'篮球': 'NBA',
       '公牛队': '罗德曼',
       'FMVP': '詹姆斯'}

name = input("请输入你要查询的东西:")
out = dic.get(name)

if out == None:
    print("没有这个结果...")
else:
    print(out)

3.循环遍历

存在数据:dic = {'篮球': 'NBA', '公牛队': '罗德曼', 'FMVP': '詹姆斯'}

我们使用for循环遍历字典时,默认查询得到的结果是key,而不是value

将所有的key放在一个列表中

在这里插入图片描述

将所有的value放在一个列表中

在这里插入图片描述

直接拿到字典中的所有keyvalue

在这里插入图片描述

这个结果集展示了列表中包含的元组,为了得到更详细的keyvalue
通过下列代码可以实现:

dic = {'篮球': 'NBA',
       '公牛队': '罗德曼',
       'FMVP': '詹姆斯'}

print(dic.items())
for item in dic.items():
    key = item[0]
    value = item[1]
    print(key, value)

由此可以得到keyvalue

但上述代码有点繁琐,我们可以解构(解包)进行简化。(解构可以对列表和元组操作)
由于已经知道dic.items()得到的是两个结果,可以一一对应,因此直接对item分解成keyvalue

for key,value in dic.items():
    print(key, value)

该代码的效果就像下图一样

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值