2013-04-21 45 views
0

我有一個字典。鍵是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 

它打印作爲單獨的時間表(這樣就會有3031之間30個連字符和應無每一個事件)

我的猜測是,首先爲了通過密鑰字典,然後從。減去的當期的關鍵前一個關鍵數字,這將使剩餘的連字號還沒有打印在中間的數字中。但是,如何在我的for循環中實際訪問previous key

希望我的理解問題。

回答

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是相關文檔。

+0

美麗的解決方案,非常感謝! – nutship 2013-04-21 06:59:45