我编写了一个搜索网站的代码,并返回一个货币值和汇率的嵌套列表,输出样本低于
[['Argentine Peso', ['9.44195', '0.10591']], ['Australian Dollar', ['1.41824', '0.70510']], ['Bahraini Dinar', ['0.37743', '2.64953']]...
我需要编写一个代码,该代码接受一个名称的输入并返回与之关联的值,因此,如果我输入阿根廷比索,它将返回
[9.44195, 0.10591]
但我不确定如何搜索列表
答案 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)
列表中的每个条目都是两个组件的列表:
在python中,您可以自动将n个值列表的值分配给n个变量:
a, b, c = [7,8,9]
这类似于在for循环的每次迭代中如何生成(键,值)对。
但是,使用将列表转换为dict的解决方案将为您提供执行最快查找的数据结构。