所以我得到了一个模块,里面有一个元组列表。每个元组有 3 项,公司代码、公司名称和公司价格:
('bwt', 'bigwilsontrans', 23.4)
这个列表中有很多项目。我被要求做的是编写一个程序,要求用户输入公司的代码(可以是多个)并从列表中返回包含相应代码的元组。
如果代码与列表中的任何代码都不匹配,则忽略该代码。任何人都可以帮忙吗?我被困在如何返回元组上。我对python很陌生,如果这看起来很基本,我很抱歉
您可以使用索引访问元组的各个成员,就像它是一个数组一样,请参阅相关的python 文档以获取更多信息。
所以这是一个非常简单的事情,从大海捞针(元组列表)中获取你的针(公司代码)
# haystack is a list of tuples
def find_needle(needle, haystack):
for foo in haystack:
# foo is a tuple, notice we can index into it like an array
if foo[0] == needle:
print foo
让我们list_
成为元组列表和c_code
公司代码,通过某些控件从输入raw_input
或某些 GUI 中读取(如果您需要帮助,请告诉我。
您可以使用任一列表理解:
matching_results = [t for t in list_ if t[0] == c_code]
或内置filter
函数:
matching_results = filter(lambda t: t[0]==c_code, list_)
注意版本 2:在 Python 3 中,filter
它是生成器样式的,即它不会创建列表,但您可以对其进行迭代。要在 Python 3 中获取列表,您必须调用list(...)
此生成器。
编辑
如果您有公司代码列表c_codes
,您可以
matching_results = [t for t in list_ if t[0] in c_codes]
这应该是最简单的方法。
听起来您几乎肯定想使用dict
.
companies = { "bwt": (bigwilsontrans, 23.4),
"abc": (alphabet, 25.9)
}
然后查找它,您可以简单地执行以下操作:
code = int(raw_input("Code: "))
print companies[code]
尝试:
>>>tuple([1, 2, 3])
(1, 2, 3)