lst = [["R21", 120], ["R21", 120], ["R23", 200]]
out = {}
for k, v in lst:
out.setdefault(k, 0)
out[k] += v
out = [[k, v] for k, v in out.items()]
print(out)
x = [['R21', 120], ['R21', 120], ['R23', 200]]
result = {}
for pair in x:
key, value = pair
if key in result:
result[key] += value
else:
result[key] = value
# result is {'R21': 240, 'R23': 200}
numbers = [['R21', 120], ['R21', 120], ['R23', 200]]
def merge(nums):
new = []
checked = []
for i in range(len(nums)):
if nums[i][0] in checked:
continue
target = nums[i]
sm = target[1]
for n in nums[i+1:]:
if n[0] == target[0]:
sm += n[1]
new.append([target[0], sum])
checked.append(target[0])
return new
print(merge(numbers))
您可以创建临时字典来保存您的值,然后再转换回列表:
印刷品:
要做到这一点,一个很好的方法是浏览一下您的列表,如下所示:
现在,如果你坚持要一份清单,我们可以写:
但是,
result.items()
将为您提供一个tuples
列表,因此无需转换为此列表,除非您打算展开或修改它们。这第二步将添加初始列表的第二次遍历在时间和空间方面,这可能不是最佳的解决方案,但对于任何输入都是可扩展的,并且任何人都可以清楚地理解;我不想使用python列表理解来让它更清楚:
输出:
相关问题 更多 >
编程相关推荐