如何在具有多个条件的单独元组列表中减去最后一个数字/元素?

凯泽
samplelist1 = [('A', 'Pass', 20), ('A', 'Failed', 5), ('B', 'Pass', 10), ('B', 'Failed', 5) ]

samplelist2 = [('A', 'Pass', 2), ('A', 'Failed', 1), ('B', 'Failed', 2)]

# Expected Output: result = [('A', 'Pass', 18), ('A', 'Failed', 4), ('B', 'Pass', 10), ('B', 'Failed', 3) 

我还能用这个代码吗???使用此代码作为我的参考

from collections import defaultdict

d = defaultdict(int)
for letter, status, value in samplelist:
    d[(letter, status)] += value
res = [key + (val,) for key, val in d.items()] # convert to required format
print(res) 
路跑者

您当前的代码将不起作用,因为它使用samplelist,但您的数据仅包含samplelist1samplelist2我假设这是一个错误,您忘记包含迭代示例列表的循环。

无论如何,我认为您不需要defaultdict. 只需 traverse samplelist1,在字典中设置值,然后 traverse samplelist2,并从字典中减去值。

samplelist1 = [('A', 'Pass', 20), ('A', 'Failed', 5), ('B', 'Pass', 10), ('B', 'Failed', 5) ]

samplelist2 = [('A', 'Pass', 2), ('A', 'Failed', 1), ('B', 'Failed', 2)]

d = {}
for x, y, z in samplelist1:
    d[x, y] = z

for x, y, z in samplelist2:
    d[x, y] -= z

result = [(k1, k2, v) for (k1, k2), v in d.items()]

print(result)

如果我们真的想使用 a defaultdict,我们可以修改您的方法,首先收集列表中的项目,然后从第二个项目中减去第一个项目(如果存在多个元素):

from collections import defaultdict

samplelist1 = [('A', 'Pass', 20), ('A', 'Failed', 5), ('B', 'Pass', 10), ('B', 'Failed', 5) ]

samplelist2 = [('A', 'Pass', 2), ('A', 'Failed', 1), ('B', 'Failed', 2)]

d = defaultdict(list)
for samplelist in (samplelist1, samplelist2):
    for x, y, z in samplelist:
        d[x, y].append(z)

result = [(k1, k2, v[0] - v[1] if len(v) > 1 else v[0]) for (k1, k2), v in d.items()]

print(result)

输出:

[('A', 'Pass', 18), ('A', 'Failed', 4), ('B', 'Pass', 10), ('B', 'Failed', 3)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何总结具有多个条件的元组列表中的最后一个数字/元素?

从具有多个数字的单元格中获取最后一个数字

如何在python中捕获字符串中的第一个数字元素?

如何在列表中的元组中检查第一个数字?

如何在熊猫列表中减去元组元素并应用条件?

Python如何查找列表中是否有数字,但列表中的最后一个数字不是?

如果元组具有相同的第一个元素,如何聚合元组列表中的元素?

如何在一个元素上具有多个数据绑定属性?

如何创建一个将列表中每个非数字元素转换为as.numeric的函数?

如何设计一个函数,从给定列表中的每个数字中减去 2?

如何将基于最后一个元素的元组列表与条件进行比较

如何在python中将具有一个元素的列表转换为具有多个元素的列表

如何多次从自身中减去一个数字?

如何从R中具有多个条件的一个数据帧创建多个数据帧

在python中打印列表中小于最后一个数字的所有数字

如何找到行中的最后一个数字减去行中的倒数第二个

如何从数据表中的列表元素中减去数字元素

如何在具有多个回调的函数中获取最后一个回调?

如何在c#中减去路径的最后一个元素?[解决了]

如何在具有一个或多个元素的数组中检测存在的元素

如何从满足条件的元组中返回最后一个元素号?

如何按每个元组中的第一个元素对元组列表进行排序,并选择每组中最后一个元素最大的元组

为什么没有删除该列表中的最后一个数字?

如何在Java中删除字符串中最后一个数字之后的所有内容?

matplotlib:如何在一个网格中绘制多个散点图,其中每个图基于单独的列表具有不同的颜色?

如何从包含零的列表中获取最后一个数字?

如何在Python中的一个if语句中具有多个条件

如何捕捉句子中的最后一个数字?

如何屏蔽Swift中的最后一个数字?