gpt4 book ai didi

python - 计算字典中 get 方法返回第二个选项的次数

转载 作者:太空宇宙 更新时间:2023-11-03 15:09:18 25 4
gpt4 key购买 nike

我正在尝试根据字典的值构建一个列表,并使用 get 方法来处理缺失的值:

dic = {'foo': 1, 'bar': 2}
list_values = [dic.get(k, 0) for k in ['foo', 'bar', 'baz']]
print(list_values)
>>> [1, 2, 0]

问题是我想知道 get 方法返回第二个选项的次数。

我知道我可以使用一个简单的循环:

list_values = []
missing = 0
for k in ['foo', 'bar', 'baz']:
if k in dic:
list_values.append(dic[k])
else:
missing += 1
list_values.append(0)

但与之前创建的列表理解相比,它看起来并不真正Pythonic。

另一个想法是创建一个函数,然后使用包装器来计算该函数被调用的次数,但是无论是否使用 get 调用键,都会调用该函数 存在,如这个简单的示例所示:

dic = {'a': 1}


# Do something to count the number of times the function was called
def missing_value():
print('eh')
return 0

print(dic.get('a', missing_value()))
>>> eh
>>> 1

任何人都有一个简单而优雅的解决方案,还是我应该决定在理解字典之外使用循环?

最佳答案

这应该可以解决问题:

sum( 1 for k in dic.keys() if k not in ['foo', 'bar', 'baz'])

避免仅使用 get 来检查 key 是否存在

注意:您还可以使用集合的长度,如下所示:

L = set(dic.keys())
L2 = set(['foo', 'bar', 'baz'])
print(len(L2) - len(L & L2))

关于python - 计算字典中 get 方法返回第二个选项的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44367417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com