我熟悉使用iteritems()和items()与标准字典一起使用,它可以与for循环结合使用来扫描键和值。但是,如何使用默认字典最好地执行此操作。例如,我想检查一个给定的值是否显示在键或与任何键相关的任何值中。我目前正在尝试以下方法:
for key, val in dic.iteritems():
print key, val
然而,我得到以下内容:
1 deque([2, 2])
我对变量/字典
有以下声明from collections import defaultdict, deque
clusterdict = defaultdict(deque)
那么我如何才能最好地获得关键值?谢谢!
答案 0 :(得分:3)
通常,对于defaultdict dd ,要检查值 x 是否用作键,请执行以下操作:
x in dd
要检查 x 是否用作值,请执行以下操作:
x in dd.itervalues()
在您的情况下(将deques作为值的defaultdict),您可能想要查看 x 是否在任何deques中:
any(x in deq for deq in dd.itervalues())
请记住,defaultdicts的行为与常规字典相似,只是它们在对缺失键进行d[k]
查找时自动创建新条目;否则,他们的行为与常规词汇没有什么不同。
答案 1 :(得分:2)
如果我理解你的问题:
for key, val in dic.iteritems():
if key!=given_value and not given_value in val:
print "it's not there!"
除非你有别的意思......
答案 2 :(得分:1)
我是为Python 3设计的:
from collections import defaultdict
count_data = defaultdict(int)
count_data[1] = 10
query = 2
if query in count_data.values():
print('yes')
编辑
您也可以使用Counter字典:
from collections import Counter
count_data = Counter()
count_data[1] = 10
query = 2
if query in count_data.values():
print('yes')
答案 3 :(得分:0)
stuff = 'value to check'
if not any((suff in key or stuff in value) for key, value in dic.iteritems()):
# do something if stuff not in any key or value
答案 4 :(得分:-1)