mfc 添加 excel类给定关键字不在字典中_Python全栈之路-5-字典

5c305f41824667f563391e2e945c7971.png

本文代码

地址​github.com

字典定义与构造

字典是一种键值组合类型,每个元素由:分隔的两个值构成,:前面是键,:后面是值,关键字通常是字符串或者数字,值可以是任意类型. 通常使用大括号或者dict()构造字典.

# a和b是空字典
a = {}
b = dict()
# 使用键值对初始化字典
c = {
    "apple": "红色",
    "banana": "黄色",
    "pear": "黄色", 
}

# 使用元组列表初始化字典
d = dict([('"sape"', 4139), ('"guido"', 4127), ('"jack"', 4098)])

# dict()构造函数中每组关键字参数就是字典中的一组键值对
e = dict(name="张三", age=18, gender="男")

# 通过zip聚合的可迭代对象构造
f = dict(zip(["张三", "李四", "王五", "赵六"], ["北京", "上海", "广州", "深圳"]))

print(c)
print(d)
print(e)
print(f)

{'apple': '红色', 'banana': '黄色', 'pear': '黄色'}
{'"sape"': 4139, '"guido"': 4127, '"jack"': 4098}
{'name': '张三', 'age': 18, 'gender': '男'}
{'张三': '北京', '李四': '上海', '王五': '广州', '赵六': '深圳'}

字典操作

d = dict(zip(["张三", "李四", "王五", "赵六"], ["北京", "上海", "广州", "深圳"]))

# list(d)获取字典所有key的列表
print(list(d))

['张三', '李四', '王五', '赵六']
# len(d)获取字典元素数量
print(len(d))

4
# d[key]获取key对应的value,如果key不存在则会抛出KeyError异常
print(d["张三"])
# 访问不存在的key将抛出KeyError异常
print(d["隔壁老王"])

北京



---------------------------------------------------------------------------

KeyError                                  Traceback (most recent call last)

<ipython-input-5-b99b8965b8a6> in <module>
      2 print(d["张三"])
      3 # 访问不存在的key将抛出KeyError异常
----> 4 print(d["隔壁老王"])


KeyError: '隔壁老王'
# 修改key对应的value
d["张三"] = "杭州"
# 如果key不存在则添加这对key value到字典中
d["老王"] = "南京"
print(d)

{'张三': '杭州', '李四': '上海', '王五': '广州', '赵六': '深圳', '老王': '南京'}
# 判断key是否在字典中
if "张三" in d:
    print(d["张三"])
    
# 判断key是否不在字典中
if "小王" not in d:
    d["小王"] = "成都"
print(d)

杭州
{'张三': '杭州', '李四': '上海', '王五': '广州', '赵六': '深圳', '老王': '南京', '小王': '成都'}

get(key[,default])如果 key 存在于字典中则返回 key对应的值,否则返回 default。 如果 default 未给出则默认为 None,因而此方法绝不会引发KeyError

# 老张虽然不在字典中,但是可以给定默认值
print(d.get("老张", "北京"))
# 小张不在字典中,且未给定默认值,则默认返回None
print(d.get("小张"))

北京
None
# 遍历字典
for key in d:
    print("key: {}, value: {}".format(key, d[key]))

key: 张三, value: 杭州
key: 李四, value: 上海
key: 王五, value: 广州
key: 赵六, value: 深圳
key: 老王, value: 南京
key: 小王, value: 成都
# 通过items()遍历字典
for key, value in d.items():
    print("key: {}, value: {}".format(key, value))

key: 张三, value: 杭州
key: 李四, value: 上海
key: 王五, value: 广州
key: 赵六, value: 深圳
key: 老王, value: 南京
key: 小王, value: 成都
# keys()返回由字典键组成的一个新视图
print(list(d.keys()))

['张三', '李四', '王五', '赵六', '老王', '小王']
# values()返回由字典值组成的一个新视图
print(list(d.values()))

['杭州', '上海', '广州', '深圳', '南京', '成都']
# update(other)使用来自other的键值对更新字典,并覆盖原有的键
other = {"张三": "西安", "李四": "武汉"}
d.update(other)
# 从输出结果我们看到张三李四对应的value发生的更新
print(d)

{'张三': '西安', '李四': '武汉', '王五': '广州', '赵六': '深圳', '老王': '南京', '小王': '成都'}
# 从字典中删除一个元素
del d["小王"]
print(d)

{'张三': '西安', '李四': '武汉', '王五': '广州', '赵六': '深圳', '老王': '南京'}

pop(key[, default])如果key 存在于字典中则将其移除并返回其值,否则返回 default。 如果 default 未给出且 key 不存在于字典中,则会引发KeyError,与get的区别在于get不会删除元素,而pop会删除元素

# 删除张三对应的键值对,并返回张三对应的value
val = d.pop("张三")
print(val)
# 小王不在字典中,但是可以返回给定的默认值
val2 = d.pop("小王", "成都")
print(val2)

西安
成都
# 清空字典
d.clear()
print(d)

{}

字典推导

与列表一样,字典也可以进行推导,字典通过{}包括代码进行推导,例子如下

d = dict(zip(["张三", "李四", "王五", "赵六"], [13, 14, 15, 16]))
print(d)

{'张三': 13, '李四': 14, '王五': 15, '赵六': 16}
# 获取的字典中所有值为原值的平方
d2 = {key: value*value for key, value in d.items()}
print(d2)

{'张三': 169, '李四': 196, '王五': 225, '赵六': 256}
# 只获取满足条件的元素
d3 = {key: value*value for key, value in d.items() if value > 14}
print(d3)

{'王五': 225, '赵六': 256}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值