Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python删除其值总和等于总数的键_Python_Dictionary - Fatal编程技术网

python删除其值总和等于总数的键

python删除其值总和等于总数的键,python,dictionary,Python,Dictionary,我试图删除timedelta,其值之和等于6。它们还必须是目录中最大的时间增量 以下是我试图解决这个问题的方法: 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

我试图删除timedelta,其值之和等于6。它们还必须是目录中最大的时间增量

以下是我试图解决这个问题的方法:

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}

再次被难倒。

从评论中,我推断您希望删除最大的时间增量,直到其值的总和达到6

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

不要使用
dict
作为名称,你正在屏蔽内置类型。看看这个问题是否对你有帮助-如果最大键的总和不正好是6怎么办?@koogee:查找“背包问题”,你这里有一个。@koogee但是你能在总和中有两个以上的值吗?谢谢。它对提出的问题很有效。我将对它进行更多的测试,同时还将研究最大键的总和与本例中的不完全相同的情况。
TypeError: argument of type 'datetime.timedelta' is not iterable
values_sum = 0
for key in sorted(dict1,reverse=True):
    values_sum +=dict1[key]
    del dict1[key]
    if values_sum >= 6:
        break