我真的是Python的新手,我正在尝试执行以下操作
我有两个列表,其中一个像
列表1:
['elem11','elem12','elem13'],
['elem21','elem22','elem23'],
['elem31','elem32','elem33']
另外一个
列表2:
['elem11', value1],
['elem12', value2],
['elem13', value3],
['elem21', value4],
...
list2包含list1中的所有元素及其相应的值。
我想生成第三个列表,例如
列表3:
['result line1 from list1', value1*value2*value3],
['result line2 from list1', value4*value5*value6],
['result line3 from list1', value7*value8*value9],
list1和list2中的元素完全没有顺序,因此我必须能够将list1中的每个元素与list2中的值进行匹配。
我尝试使用类似的东西
for i in range(3)
if list1[i][0] in list2
...
if list1[i][1] in list2
...
if list1[i][2] in list2
...
但是我已经不知道如何从list2中获取第二列的值
我应该使用什么功能?
答案 0 :(得分:0)
您在此处使用了错误的数据结构。您需要一个字典,而不是列表。
直接创建一个字典:
list2_dict = {
'elem11': value1,
'elem12': value2,
'elem13': value3,
'elem21': value4
}
或从列表中创建一个,如果您无法更改以列表开头的事实:
list2 = [
['elem11', value1],
['elem12', value2],
['elem13', value3],
['elem21', value4]
]
list2_dict = {key:val for key,val in list2}
然后您可以遍历list1并构造您的list3:
list3 = []
for i, list1_row in enumerate(list1):
row_sum = 0
for list1_el in list1_row:
row_sum += list2_dict[list1_el]
list3.append(("result line" + str(i+1) + " from list1", row_sum))
# list3:
[
('result line1 from list1', <some number>),
('result line2 from list1', <some number>),
('result line3 from list1', <some number>)
]
此外,请注意list3不包含子列表,但包含元组。如果您知道其中将包含的元素数量,请不要使用列表。改用元组。
答案 1 :(得分:-1)
*假设SELECT
中的所有elemX
是唯一的,并且在list1
中仅出现一次。
如果将list2
更改为字典,则很容易获得值。
list2
然后遍历list2_dict = {item[0]: item[1] for item in list2}
并获取值
list1