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()タプルのリストが返され、次の行はdictwordsCountの値をリストのペアと比較することです。解決策は

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