2

我熟悉 iteritems() 和 items() 与标准字典的使用,它可以与 for 循环结合使用来扫描键和值。但是,我怎样才能最好地使用默认字典来做到这一点。例如,我想检查给定值是否未显示在键或与任何键关联的任何值中。我目前正在尝试以下方法:

for key, val in dic.iteritems():
    print key, val

但是我得到以下信息:

1 deque([2, 2])

我对变量/字典有以下声明

from collections import defaultdict, deque
clusterdict = defaultdict(deque)

那么我如何才能最好地获得关键值呢?谢谢!

4

5 回答 5

3

通常,对于 defaultdict dd,要检查值x是否用作键,请执行以下操作:

x in dd

要检查x是否用作值,请执行以下操作:

x in dd.itervalues()

在您的情况下(以双端队列为值的默认字典),您可能想查看x是否在任何双端队列中:

any(x in deq for deq in dd.itervalues())

请记住,defaultdicts 的行为类似于常规字典,只是它们在d[k]查找丢失的键时会自动创建新条目。否则,它们的行为与常规 dicts 没有什么不同。

于 2012-01-18T12:12:55.787 回答
2

如果我理解你的问题:

for key, val in dic.iteritems():
    if key!=given_value and not given_value in val:
        print "it's not there!"

除非你的意思是别的...

于 2012-01-18T12:12:59.663 回答
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')
于 2018-10-02T20:52:10.937 回答
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
于 2012-01-18T12:23:07.963 回答
-2

http://docs.python.org/library/collections.html#collections.defaultdict

所以你可以使用iteritems

于 2012-01-18T12:16:56.540 回答