如何从python中的列表中获取元组(3.3)

时间:2013-03-20 06:37:51

标签: python list tuples

所以我已经获得了一个包含元组列表的模块。每个元组有3个项目,公司代码,公司名称和公司价格:

('bwt', 'bigwilsontrans', 23.4)

此列表中包含很多项目。我被要求做的是编写一个程序,要求用户输入公司的代码(可以是多个),并从列表中返回包含相应代码的元组。

如果代码与列表中的任何代码不匹配,则忽略该代码。有人可以帮忙吗?我一直坚持如何归还元组。我对python很新,很抱歉,如果这看起来很基本

4 个答案:

答案 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)