【问题标题】:Printing a timeline, logistic issue打印时间线,后勤问题
【发布时间】:2013-04-21 06:52:38
【问题描述】:

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

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

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

净结果应该是:

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

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

我有这个代码

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

但这会导致

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

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

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

希望我的问题可以理解。

【问题讨论】:

    标签: python printing python-2.7


    【解决方案1】:

    你可以这样做:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多