0

リストと 2 つの関数があります。1 つは検索機能で、もう 1 つは検索された内容を表示します。

list = {
1 : ("1200", "Walnut St", 919822),
2: ("1300", "Adam Dr", 919823),
3: ("1200", "Rodeo Dr", 919823),
}

def search(word_searched):
#prints list of key that contains word_searched

def show(list_ID):
#do stuff

私の質問は、「1200」を検索した場合、どうすればこれを返すことができるかということです:

1
3
4

1 に答える 1

1

リスト内包表記を使用します。

>>> dic = {                                      
1 : ("1200", "Walnut St", 919822),
2: ("1300", "Adam Dr", 919823),
3: ("1200", "Rodeo Dr", 919823),
}
>>> [k for k,v in dic.iteritems() if "1200" in v]
[1, 3]

py3.x の場合:

>>> [k for k,v in dic.items() if "1200" in v]
[1, 3]

これを複数回行う場合は、パフォーマンスを向上させるために新しい dict を作成することをお勧めします。

>>> d = {}
for k,v in dic.iteritems():
    d.setdefault(v[0],[]).append(k)

>>> d
{'1300': [2], '1200': [1, 3]}

>>> d["1200"]
[1, 3]
>>> d["1300"]
[2]

list変数名として使用しないでください。

于 2013-06-27T22:54:56.970 に答える