打印时间表,后勤问题

时间:2013-04-21 06:52:38

标签: python printing python-2.7

我有一个词典。键是0到60之间的数字。这是几分钟。示例dict看起来像这样:

{u'31': 1, u'2': 0, u'30': 1} 

我想将键(数字)打印为所有键中带有连字符的时间轴,所有键都以逗号分隔。连字符的数量由字典中每个键的数量表示。

净结果应为:

-,-,0,-,-,-,-,-,-,-,-,-,-,1,1,-,-,-,-,-,-

(以上只是为了说明,中间连字符的数量不正确,但你得到了图片。这意味着在2位置(dict的键),有0(字母的值) ,在30位置,有1的值,依此类推。)

我有这段代码

for k, v in time_events.iteritems():
    print '-,'*int(k) + str(v)+',', 

但这会导致

-,-,0,-,-,-,-,-,-,1,-,-,-,-,-,-,-1

它将每个事件打印为单独的时间轴(因此在3031之间将有30个连字符,并且应该为无)

我的猜测是,首先按键排序dict,然后从当前键中减去前一个键号,这样就可以在数字之间打印剩余的连字符数。但是如何实际访问previous key循环中的for

希望我的问题可以理解。

1 个答案:

答案 0 :(得分:2)

你可以这样做:

>>> 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是相关文档。