我有一个列表和两个函数。一个是搜索功能,另一个显示搜索的内容。
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
答案 0 :(得分: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
用作变量名称。