搜索嵌套列表python

时间:2015-11-03 00:09:58

标签: python list nested

我编写了一个搜索网站的代码,并返回一个货币值和汇率的嵌套列表,输出样本低于

[['Argentine Peso', ['9.44195', '0.10591']], ['Australian Dollar', ['1.41824', '0.70510']], ['Bahraini Dinar', ['0.37743', '2.64953']]...

我需要编写一个代码,该代码接受一个名称的输入并返回与之关联的值,因此,如果我输入阿根廷比索,它将返回

[9.44195, 0.10591]

但我不确定如何搜索列表

3 个答案:

答案 0 :(得分:6)

您可能需要字典而不是列表:

>>> l = [['Argentine Peso', ['9.44195', '0.10591']], ['Australian Dollar', ['1.41824', '0.70510']], ['Bahraini Dinar', ['0.37743', '2.64953']]]
>>> d = dict(l)
>>> d["Argentine Peso"]
['9.44195', '0.10591']

如果出于某种原因,您必须使用列表,我有时会使用以下内容:

>>> matches = [it for it in l if it[0] == query]
>>> assert len(matches) == 1, "match not found or ambiguous"
>>> matches[0]

...虽然我主要用它来进行模糊匹配。为了精确匹配,我强烈推荐字典;这就是他们的目的。

答案 1 :(得分:0)

这是一个班轮:

lookup = dict([['Argentine Peso', ['9.44195', '0.10591']], ['Australian Dollar', ['1.41824', '0.70510']], ['Bahraini Dinar', ['0.37743', '2.64953']]])

答案 2 :(得分:0)

不使用列表推导或词汇的变体:

currency_list = [['Argentine Peso', ['9.44195', '0.10591']], 
    ['Australian Dollar', ['1.41824', '0.70510']], 
    ['Bahraini Dinar', ['0.37743', '2.64953']]]

def search_list(query_string, cur_list):
    for key, val in cur_list:
        if key == query_string:
            return val

search_list('Australian Dollar', currency_list)

列表中的每个条目都是两个组件的列表:

  1. 表示货币(键)的字符串
  2. 表示货币的值范围(值)的列表
  3. 在python中,您可以自动将n个值列表的值分配给n个变量:

    a, b, c = [7,8,9] 
    

    这类似于在for循环的每次迭代中如何生成(键,值)对。

    但是,使用将列表转换为dict的解决方案将为您提供执行最快查找的数据结构。