2014-02-14 25 views
0
dict1 = {datetime.timedelta(3, 21388, 702926): 2, datetime.timedelta(10, 21388, 702926): 1, datetime.timedelta(3, 65011, 297074): 2, datetime.timedelta(14, 65011, 297074): 1, datetime.timedelta(17, 65011, 297074): 1, datetime.timedelta(0, 65011, 297074): 1, datetime.timedelta(7, 65011, 297074): 1, datetime.timedelta(10, 65011, 297074): 1, datetime.timedelta(0, 21388, 702926): 1} 

我正在嘗試刪除timedeltas,其值之和等於6。python刪除其值總計達到總數的鍵

以下是我正在試圖解決這個問題:

x = 0 
for key in dict1: 
    if key in sorted(dict1)[-1] and x < 6: 
     x = x+dict1[key] 
     del dict1[key] 

我的想法進行排序(字典)返回,並在最後從最大的timedeltas的列表。我可以匹配列表中的最大timedelta每個鍵,總結其值設置爲X &刪除鍵,直到x達到6但這返回:

TypeError: argument of type 'datetime.timedelta' is not iterable 

而煩惱了。

+2

不要使用'dict'的名字,你掩蓋了內置類型。 –

+0

看看這個問題,看看它是否可以幫助你 - http://stackoverflow.com/questions/1060279/iterating-through-a-range-of-dates-in-python – Dayan

+0

如果最大的鍵的總和是*不*完全6? –

回答

1

從我推斷你要刪除的最大timedeltas,直到它們的值的合計總和達到6評論

values_sum = 0 
for key in sorted(dict1,reverse=True): 
    values_sum +=dict1[key] 
    del dict1[key] 
    if values_sum >= 6: 
     break  
+0

謝謝。對於所提出的問題它效果很好。我將進一步測試它,並且在最大鍵的總和不是_exactly_ 6的情況下查看情況,就像在這種情況下一樣。 – koogee