Python 从元组字典中删除重复项

Python 从元组字典中删除重复项,python,dictionary,duplicates,tuples,Python,Dictionary,Duplicates,Tuples,我有下面的字典,它由键组成:元组作为值的列表 {0: [(1410.0, 21.77562368178597), (1400.0, 19.207664561646514), (1400.0, 0.0008002910625641847), (1390.0, 0.005384339399360756), (1390.0, 16.81119144715727), (1380.0, 0.006317587214078991), (1380.0, 14.581397723675186), (1370.0

我有下面的字典,它由键组成:元组作为值的列表

{0: [(1410.0, 21.77562368178597), (1400.0, 19.207664561646514), (1400.0, 0.0008002910625641847), (1390.0, 0.005384339399360756), (1390.0, 16.81119144715727), (1380.0, 0.006317587214078991), (1380.0, 14.581397723675186), (1370.0, 12.425676833176958), (1360.0, 10.157186391679849), (1350.0, 8.464056857473565), (1340.0, 6.743908971063571), (1330.0, 4.886783322196731), (1320.0, 3.712576730302521), (1310.0, 2.689847385668083), (1300.0, 1.6219146729959537), (1290.0, 0.41216337921204677)], ....etc)
在某些情况下,元组的第一个元素相同,但第二个元素不同。 在上面代码的示例中
(1400,19.2)
(1400,0.0000000000 291)


我想做的是将这些元组组合成一个元组(1400,(第二个元素的总和)

我得到的第一个想法是2个for循环,在第一个循环中,从当前元组中获取第一个数字,在第二个for循环中,将其与dic中元素的每个第一个数字进行比较。如果匹配,则从该元组中获取该元素的第二个数字,并将其添加到第一个for循环中。然后删除元组第二个循环中的e。您还可以为具有重复第一个数字的所有元组保存每个键,并在下一步中对它们进行delate可能有更好的解决方案,但如果性能不重要,我会尝试这样做。

这是您的意思吗

假设
d
是词典的名称

d = {0: [(1410.0, 21.77562368178597), (1400.0, 19.207664561646514), (1400.0, 0.0008002910625641847), (1390.0, 0.005384339399360756), (1390.0, 16.81119144715727), (1380.0, 0.006317587214078991), (1380.0, 14.581397723675186), (1370.0, 12.425676833176958), (1360.0, 10.157186391679849), (1350.0, 8.464056857473565), (1340.0, 6.743908971063571), (1330.0, 4.886783322196731), (1320.0, 3.712576730302521), (1310.0, 2.689847385668083), (1300.0, 1.6219146729959537), (1290.0, 0.41216337921204677)]}
现在请尝试以下代码:

new_d = {}
for item in d:
    summations = {}
    for key, value in d[item]:
        if key in summations:
            summations[key] += value
        else:
            summations[key] = value
    temp_list = []
    for key in summations:
        temp_list.append((key, summations[key]))
    new_d[item] = temp_list
print(new_d)
演示:


好极了,它就像一个符咒
s = set()
[s.add(t) for t in dict_of_tuples.values()]
>>> dict_of_tuples = tuple([1,2,(3,3), (3, 3)]
{1, 2, (3, 3), (3,3)}
>>> s = set()
>>> [s.add(t) for t in dict_of_tuples.values()]
(1, 2, (3,3))