【问题标题】:Generate tuples of intervals from dict in Python在 Python 中从 dict 生成间隔元组
【发布时间】:2015-10-19 17:03:59
【问题描述】:

是否有执行以下操作的列表理解方式?

输出应该是:[(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

【问题讨论】:

  • 我很惊讶这甚至可以循环工作。字典是无序的。
  • 你如何定义a < b < c

标签: python list dictionary tuples


【解决方案1】:

有时单行不是那么好:

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 中是无序的。

【讨论】:

    猜你喜欢
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    相关资源
    最近更新 更多