{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
它将每个事件打印为单独的时间轴(因此在30
和31
之间将有30个连字符,并且应该为无)
我的猜测是,首先按键排序dict,然后从当前键中减去前一个键号,这样就可以在数字之间打印剩余的连字符数。但是如何实际访问previous key
循环中的for
?
希望我的问题可以理解。
答案 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是相关文档。