1

所以我得到了一个模块,里面有一个元组列表。每个元组有 3 项,公司代码、公司名称和公司价格:

('bwt', 'bigwilsontrans', 23.4)

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

如果代码与列表中的任何代码都不匹配,则忽略该代码。任何人都可以帮忙吗?我被困在如何返回元组上。我对python很陌生,如果这看起来很基本,我很抱歉

4

4 回答 4

1

您可以使用索引访问元组的各个成员,就像它是一个数组一样,请参阅相关的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
于 2013-03-20T06:49:35.343 回答
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]

这应该是最简单的方法。

于 2013-03-20T06:55:19.407 回答
0

听起来您几乎肯定想使用dict.

companies = { "bwt": (bigwilsontrans, 23.4),
              "abc": (alphabet, 25.9)
            }

然后查找它,您可以简单地执行以下操作:

code = int(raw_input("Code: "))
print companies[code]
于 2013-03-20T06:52:36.597 回答
-2

尝试:

>>>tuple([1, 2, 3])
(1, 2, 3)
于 2013-03-20T07:00:41.270 回答