python删除其值总计的键

时间:2014-02-14 13:40:18

标签: python dictionary

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.它们也必须是dict中最大的timedeltas。

以下是我试图解决的问题:

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

我的思路是排序的(dict)返回一个timedeltas列表,最后是最大的timedeltas。我可以将每个键与列表中最大的timedelta匹配,将其值加到x&amp;删除该密钥,直到x达到6.但是这会返回:

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

再次难倒。

1 个答案:

答案 0 :(得分:1)

从评论中我推断出你想要删除最大的时间值,直到它们的总和值达到6。

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