在python中搜索dict键

在python中搜索dict键,python,Python,如果某个键存在或不存在,我如何在Bigram字典中搜索该键,如果存在,如何打印该键的值 wordsCounts = {('the','computer'): 2 , ('computer','science'): 3 , ('math','lecture'): 4, ('lecture','day'): 2} 因此,我想搜索这对('math','teaching')是否存在 pair = ['computer','science'] for k in wordscount.keys():

如果某个键存在或不存在,我如何在Bigram字典中搜索该键,如果存在,如何打印该键的值

wordsCounts = {('the','computer'): 2 , ('computer','science'): 3 , ('math','lecture'): 4, ('lecture','day'): 2}
因此,我想搜索这对
('math','teaching')
是否存在

pair = ['computer','science']
for k in wordscount.keys():
    if wordscount[k] == pair:
         print wordscount[v]
因此,结果将是一个列表
('computer','science'):3

只要测试这对元组是否存在:

if tuple(pair) in wordscount:
    print wordscount[tuple(pair)]
不需要遍历字典中的所有键;如果只给python字典一个要查找的键,那么它在查找匹配键时会更加高效,但它必须是相同的类型。您的字典键是元组,所以请在搜索时使用元组键

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

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

if tuple(pair) in wordscount:
    print wordscount[tuple(pair)]
不需要遍历字典中的所有键;如果只给python字典一个要查找的键,那么它在查找匹配键时会更加高效,但它必须是相同的类型。您的字典键是元组,所以请在搜索时使用元组键


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

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

for k in wordscount.keys():
    if wordscount[k] == pair:
wordscont.keys()
将返回元组列表,下一行是将dict-wordscont的值与列表对进行比较。 解决办法是

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

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

for k in wordscount.keys():
    if wordscount[k] == pair:
wordscont.keys()
将返回元组列表,下一行是将dict-wordscont的值与列表对进行比较。 解决办法是

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

为什么不首先创建一个元组呢
pair=('computer','science')
@MarkusMeskanen:我假设用户在这里的其他地方有一个列表。@MartijnPieters:Pythonic的方法是尝试访问所需的元素,并捕获抛出的异常(如果它不存在)。@rburny:我在这里遵循操作模式。python的方式可能是请求原谅而不是允许,但那是真的。为什么不首先创建一个元组呢
pair=('computer','science')
@MarkusMeskanen:我假设用户在这里的其他地方有一个列表。@MartijnPieters:Pythonic的方法是尝试访问所需的元素,并捕获抛出的异常(如果它不存在)。@rburny:我在这里遵循操作模式。python的方式可能是请求原谅而不是允许,但那是真的。谢谢!我正要这么做:)谢谢你!我正要这么做:)