所以我已经获得了一个包含元组列表的模块。每个元组有3个项目,公司代码,公司名称和公司价格:
('bwt', 'bigwilsontrans', 23.4)
此列表中包含很多项目。我被要求做的是编写一个程序,要求用户输入公司的代码(可以是多个),并从列表中返回包含相应代码的元组。
如果代码与列表中的任何代码不匹配,则忽略该代码。有人可以帮忙吗?我一直坚持如何归还元组。我对python很新,很抱歉,如果这看起来很基本
答案 0 :(得分:1)
您可以使用索引访问元组的各个成员,就好像它是一个数组一样,有关详细信息,请参阅相关的python docs。
所以这是一个非常简单的问题,从大海捞针(元组列表)抓住你的针(公司代码)
# 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
答案 1 :(得分:1)
让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]
这应该是最简单的方法。
答案 2 :(得分:0)
听起来你几乎肯定想要使用dict
。
companies = { "bwt": (bigwilsontrans, 23.4),
"abc": (alphabet, 25.9)
}
然后查找它,你可以简单地做:
code = int(raw_input("Code: "))
print companies[code]
答案 3 :(得分:-2)
尝试:
>>>tuple([1, 2, 3])
(1, 2, 3)