0

我有一个字典。键是 0 到 60 之间的数字。这是分钟。示例字典如下所示:

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

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

净结果应该是:

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

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

我有这个代码

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

但这会导致

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

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

我的猜测是,首先通过键对字典进行排序,然后从当前键中减去前一个键号,这将给出剩余的连字符数,但尚未在数字之间打印。但是如何实际访问previous key我的for循环中的?

希望我的问题可以理解。

4

1 回答 1

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)]. 如果不存在,则返回第二个参数(默认值)。是相关文档。

于 2013-04-21T06:55:56.433 回答