python - 获取有条件的列表元素
问题描述
假设我们有两个列表列表,如下所示:
A = [['Jake', 'Tall', 90],
['Dunne', 'Tall', 80],
['Steve', 'Not Tall', 70],
['Robert', 'Tall', 70],
['Emily', 'Not Tall', 85]]
B = [['Tall', 10], ['Not Tall', 20], ['Almost Tall', 30], ['Very Short', 40]]
因此,该列表A
将在其列表中附加一个新元素,该元素来自其第三个元素和第二个元素的附加元素,B
基于 的第二个元素是什么A
,如果'Tall'
它将被添加,10
否则20
如果'Not Tall'
。
为了便于理解,让我们以 为例A[0]
,我们看到,A[0][1] = 'Tall'
我们将附加到的元素Jake
是,其他元素90 + 10
依此类推。A
最后,我对A
列表的期望是:
A = [['Jake', 'Tall', 90, 100],
['Dunne', 'Tall', 80, 90],
['Steve', 'Not Tall', 70, 90],
['Robert', 'Tall', 70, 80],
['Emily', 'Not Tall', 85, 105]]
我试过的:
for row in A:
if row[1] == 'Tall':
row = row.append(row[2] + B[0][1])
elif row[1] == 'Not Tall':
row = row.append(row[2] + B[1][1])
但是你知道,这不是一种有效的方法,因为如果我们在B
需要中添加更多列表有助于为这个问题提供一种有效的方法。
解决方案
A = [a + [(a[2]+dict(B)[a[1]])] for a in A]
基本上,这段代码遍历 A 中的子列表并在 B 中查找要对它们做什么,使用列表推导从它们中构建一个新列表。
推荐阅读
- ubuntu - 脚本似乎运行得太早,跟随 bluetooth.target
- laravel - 如何通过 Laravel 8 中的 with() 函数将数组传递给刀片模板
- python - 请帮我理解这个python代码的输出
- c# - Visual Studio 2019 中 C# 中 button_click 方法的调用在哪里?
- android - 带有 Jetpack Compose 的 Android Room - 在另一个活动中添加项目后更新 LiveData
- spring-boot - 搜索域查询失败。原始主机名
- reactjs - 在反应 js 应用程序中使用打字稿迭代
- python - LOAD DATA LOCAL INFILE 查询正在跳过输入文件中第一个单词和最后一个单词的最后一个字符
- html - 本地和互联网上的页面看起来不同
- python - Spark将csv文件保存为docker容器内的流