python - 在列表的第一列中查找元素,但返回第二列中的元素
问题描述
我对 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 中获取第二列的值
我应该使用哪些功能?
解决方案
您在那里使用了错误的数据结构。你想要一个字典,而不是一个列表。
直接创建一个字典:
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 不包含子列表,而是元组。如果您知道其中的元素数量,请不要使用列表。改用元组。
推荐阅读
- javascript - 我们可以将 JavaScript 变量值分配给 EJS 变量吗?
- html - HTML 表单链接
- python - 将空数组与任何标量进行比较将得到一个空数组
- javascript - 标记匹配正则表达式
- java - Cloud Dataflow、PubSub 和 Bigquery 问题
- python - Python虚拟环境突然丢失所有库和模块
- java - 我想将 Android Studio 地图中的蓝点更改为箭头
- python - Django Rest Framework Serializer Relations: How to get a list of only the latest track?
- eos - EOSIO - cleos 钱包创建命令抛出错误“无效的内容长度响应”
- ios - AVPlayer: delay when status is ReadyToPlay and first frame appearing