从另一个函数显示搜索的函数;词典?

时间:2013-06-27 22:53:27

标签: python

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

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

1 个答案:

答案 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用作变量名称。