Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List - Fatal编程技术网

Python 如何解释列表元素中的重复

Python 如何解释列表元素中的重复,python,list,Python,List,父程序的目标是生成置换,并找出它们在生成过程中生成的概率。我想帮助排序相同的排列通过列表 因此,列表中的每个元素的形式为[[[a,b,c],[x],[[d,e,f],[y],…],其中x表示在一个循环中生成[a,b,c]的概率。下面是我的一个输出 [[[1, 2, 3], [0.125]],[[1, 2, 3], [0.125]],[[2, 3, 1], [0.125]],[[2, 1, 3], [0.125]],[[3, 1, 2], [0.125]],[[1, 2, 3], [0.125]]

父程序的目标是生成置换,并找出它们在生成过程中生成的概率。我想帮助排序相同的排列通过列表

因此,列表中的每个元素的形式为
[[[a,b,c],[x],[[d,e,f],[y],…]
,其中x表示在一个循环中生成
[a,b,c]
的概率。下面是我的一个输出

[[[1, 2, 3], [0.125]],[[1, 2, 3], [0.125]],[[2, 3, 1], [0.125]],[[2, 1, 3], [0.125]],[[3, 1, 2], [0.125]],[[1, 2, 3], [0.125]],[[1, 3, 2], [0.125]],[[1, 2, 3], [0.125]]] 
当我的最终列表包含
[[a,b,c],[x]]
[[a,b,c],[y]]
时,我需要它变成
[[a,b,c],[x+y]
。我该怎么做

我尝试了以下代码。输出列表称为主列表

for i in range(0,len(master_list)):
    count = []
    for j in range(i+1,len(master_list)):
        if master_list[i][0] == master_list[j][0]:
            count.append(j)
            master_list[i][1][0] += master_list[j][1][0]
        else:
            continue
    print('count for element',master_list[i][0], 'at number', i, 'is', count)
    for k in count:
        print(k)
        for c in range(0,len(count)):
            master_list.remove(master_list[k])
            print('master_list now is',master_list)
            count[c] += -1

打印报表仅供我检查。然而,我面临的问题是,在每次.remove()操作之后,列表的索引都会发生变化,因此循环会中断

与其迭代原始的list removing元素(list.remove()是O(n)),更有效的方法是通过中间字典,然后再次创建列表

from collections import defaultdict

res = [[[1, 2, 3], [0.125]], [[1, 2, 3], [0.125]], [[2, 3, 1], [0.125]], [[2, 1, 3], [0.125]], [[3, 1, 2], [0.125]],
       [[1, 2, 3], [0.125]], [[1, 3, 2], [0.125]], [[1, 2, 3], [0.125]]]

grouped_res = defaultdict(float)
for perm, prob in res:
    grouped_res[tuple(perm)] += prob[0]


new_res = [[list(k), [v]] for k, v in grouped_res.items()]
# [[[1, 2, 3], [0.5]], [[2, 3, 1], [0.125]], [[2, 1, 3], [0.125]], [[3, 1, 2], [0.125]], [[1, 3, 2], [0.125]]]

也许可以添加你试图解决的问题是的,我已经编辑了这个问题。