这里我有一个元组列表,每当键为空时我想将对应值添加到其先前的元组值。
我可以用传统的方式实现这一点,但它看起来很难看, 有没有什么Pythonic方法可以达到同样的效果?
输入:
data= [('A', 12), ('', 1), ('B', 12), ('', 1), ('C', 12), ('', 1), ('D', 13)]
预期输出:
[13, 26, 39, 52]
我的代码:
data = [('A', 12), ('', 1), ('B', 12), ('', 1), ('C', 12), ('', 1), ('D', 13)]
init = 0 ; splitdata = []
for i in data:
init = init+i[1]
if i[0] == '':
splitdata.append(init)
splitdata.append(init)
print(splitdata)
[13, 26, 39, 52]
最佳答案
reduce(
lambda lst,item: (((item[0] != '') and lst) or lst[:-1]) + [lst[-1] + item[1]],
colLabelGrouped[1:],
[colLabelGrouped[0][1]] )
这种减少...
- 从包含
colLabelGrouped
中第一项的值的初始列表开始,然后 - 将
colLabelGrouped
中的剩余项目减少...- 将每个项目的值依次添加到正在生成的列表的最后一个元素...
- 完整列表(如果项目的键不为空)或
- 列表减去最后一个元素(如果项目的键为空)。
- 将每个项目的值依次添加到正在生成的列表的最后一个元素...
关于python - 如果键为空则拆分元组并将对应值添加到其先前的元组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39350496/