打印时间表,物流问题
问题描述:
我有一个字典。键是0到60之间的数字。这是几分钟。实施例一字典是这样的:打印时间表,物流问题
{u'31': 1, u'2': 0, u'30': 1}
我想所有的密钥中的连字符,逗号分隔一切打印键(数字)的时间表。连字符数由字典中的每个键的数字表示。
最终结果应该是:
-,-,0,-,-,-,-,-,-,-,-,-,-,1,1,-,-,-,-,-,-
(这上面只是为了说明,连字符的数量插图中是不正确的,但你得到的图片这意味着,在位置2
(字典的键),有0
(字典值),位置30
有值1
等等)。
我有这样的代码
for k, v in time_events.iteritems():
print '-,'*int(k) + str(v)+',',
但是这将导致
-,-,0,-,-,-,-,-,-,1,-,-,-,-,-,-,-1
它打印作为单独的时间表(这样就会有30
和31
之间30个连字符和应无每一个事件)
我的猜测是,首先为了通过密钥字典,然后从。减去的当期的关键前一个关键数字,这将使剩余的连字号还没有打印在中间的数字中。但是,如何在我的for
循环中实际访问previous key
?
希望我的理解问题。
答
你可能只是这样做:
>>> dct={u'31': 1, u'2': 0, u'30': 1}
>>> ','.join(str(dct.get(str(i), '-')) for i in range(60))
'-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,1,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-'
dct.get(str(i), '-')
基本上试图访问dct[str(i)]
。如果不存在,则返回第二个参数(默认值)。 Here是相关文档。
美丽的解决方案,非常感谢! – nutship 2013-04-21 06:59:45