有列表理解方法可以执行以下操作吗?

输出应为:[[0,5,'a'),(5,15,'b'),(15,23,'c')]

a = { 'a' : 5, 'b' : 10, 'c' : 8 }

items = []

i = 0

for k, v in a.iteritems():
    items.append((i, i+v, k))
    i += v

print items

最佳答案

有时单线不是很好:

items = [(sum(map(a.get, sorted(a)[:i])), sum(map(a.get, sorted(a)[:i+1])), key) for i, key in enumerate(sorted(a))]


带循环的变体似乎更具可读性:

items = []
i = 0
for key in sorted(a):
    items.append((i, i+a[key], key))
    i += a[key]


无论如何,您应该对字典的键进行排序,因为字典在Python中是无序的。

关于python - 在Python中从字典生成间隔元组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33220039/

10-15 01:56