0

特定の文字列を見つけるために検索している大きな辞書があります。ディクショナリのキーは数値で、値はタプルです。大文字と小文字を区別しない検索を使用して辞書をループし、関連するフレーズを含むキーを取得して新しいリストに追加する関数を作成するにはどうすればよいですか? この新しいリスト [match] を、情報を出力するために作成した後続の関数 (show) で使用したいと思います。

私のコードは次のようになります。

dict = {
1 : (value,value,value),
2 : (value,value,value),
so on...
}
# searches dict, criteria determines whether search is for str() or int(), phrase is string I am searching for
def search(criteria,phrase):

    enter code here

# prints new list
def show(match):
4

2 に答える 2

2

リスト内包表記を使用する必要があります。

>>> d = {1: ("one", "two", "three"), 2: ("four", "five", "six")}
>>> [i for i, j in d.items() if 'two' in j]
[1]

関数として:

def search(criteria, phrase):
    return [i for i, j in criteria.items() if phrase in j]
于 2013-06-28T00:33:14.230 に答える
0

このようなものがうまくいくはずです!それはO(n)時間で動作するので、それ以上良くなることはありません:)

phrase = phrase.lower() # the matching value made lowercase (case insensitivity)
matches = []

lowerDict = {} # makes the dict lowercase
for key in dictionary:
  lowerDict[key] = [s.lower() for s in dictionary[key]]

for key in lowerDict:
  if phrase in lowerDict[key]:
    matches.append(key)

for match in matches:
  print(dictionary[match])
于 2013-06-28T00:24:47.427 に答える