从 Python 中的字典生成区间元组
Generate tuples of intervals from dict in Python
是否有列表理解方式来执行以下操作?
输出应该是:[(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.
中是无序的
是否有列表理解方式来执行以下操作?
输出应该是:[(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.
中是无序的