0

如果键存在与否,我如何在二元字典中搜索键,如果存在则打印它的值?

wordsCounts = {('the','computer'): 2 , ('computer','science'): 3 , ('math','lecture'): 4, ('lecture','day'): 2}

所以,我想搜索这对是否('math','lecture')存在?

pair = ['computer','science']
for k in wordscount.keys():
    if wordscount[k] == pair:
         print wordscount[v]

所以结果将是一个列表('computer','science'): 3

4

2 回答 2

5

只需测试该对的元组是否存在:

if tuple(pair) in wordscount:
    print wordscount[tuple(pair)]

不需要遍历字典中的所有键;如果你只给它一个要查找的键,python 字典在查找匹配键方面的效率要高得多,但它必须是相同的类型。您的字典键是元组,因此在搜索时请使用元组键。

事实上,在 python 字典中,列表是不允许作为键的,因为它们是可变的;如果可以更改密钥本身,您将无法准确搜索密钥。

于 2013-03-10T14:48:22.167 回答
0

首先,您可能想知道为什么它不起作用..

for k in wordscount.keys():
    if wordscount[k] == pair:

wordscount.keys()将返回您的元组列表,下一行是将 dict wordsCount 的值与 list 'pair. 解决方案是

for k in wordscount.keys():
    if k == tuple(pair):
        print workscount[k]
于 2013-03-10T14:57:01.930 回答