首页 > 解决方案 > 从 2 个列表中减去字符串列表元素

问题描述

我有以下代码,它适用于从 2 个列表中添加字符串元素:

list_1 = ['2 Red', '8 Blue', '4 Green']
list_2 = ['10 Red', '2 Blue', '3 Green']

list_1.extend(list_2)

results = {}

for elem in list_1:
    number, color = elem.split()
    results[color] = results.get(color, 0) + int(number)

result = [f"{i} {p}" for i, p in zip(results.values(), results.keys())]

Output: ['12 Red', '10 Blue', '7 Green']

现在,我想对相同的元素做基本的减法,输出如下:

Output: ['8 Red', '6 Blue', '1 Green']

我以为我理解了我的代码,但显然我没有,我被 int(numbers) 的 + 运算符卡住了,我不理解 zip() 函数。我希望你们能帮助我。

保持健康,度过美好的一天!

标签: pythonstringlistmathoperation

解决方案


我们int用于加法,因为要添加的数据是split操作后的字符串。

其次,我们使用zip方法在一个循环中一起迭代字典元素。

此外,您可以使用abs函数来获取问题第二部分的绝对值:

list_1 = ['2 Red', '8 Blue', '4 Green']
list_2 = ['10 Red', '2 Blue', '3 Green']
list_1.extend(list_2)

results = {}

for elem in list_1:
    number, color = elem.split()
    results[color] = abs(int(number) - results.get(color, 0) )

result = [f"{i} {p}" for i, p in zip(results.values(), results.keys())]

print(result)

推荐阅读