0

我有一个列表和两个函数。一个是搜索功能,另一个显示搜索到的内容。

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 回答