编辑:编辑过的打字错误;字典的键值应该是字典,而不是集合。在
我将保留这里的打字错误,因为下面的问题解决这个问题。我很抱歉给你添麻烦。在
问题是:
假设我有一个不重复的整数列表:
list1 = [2, 3]
在这种情况下,有一个唯一的对2-3和3-2,因此字典应该是:
^{pr2}$也就是说,有1对2-3和1对3-2。在
对于较大的列表,配对是相同的,例如
list2 = [2, 3, 4]
有双亲吗
{2:{3: 1}, 3:{2: 1}, 3:{4: 1}, 4:{3: 1}, 2:{4: 1}, 4:{2: 1}}
(1)一旦列表的大小变得更大,如何使用python数据结构在算法上找到这种格式的“唯一对”?在
(2)我提到列表不能有重复的整数,例如
[2, 2, 3]
不可能,因为有两个2
但是,可能有一个列表:
list3 = [[2, 3], [2, 3, 4]]
因此字典必须是
{2:{3: 2}, 3:{2: 2}, 3:{4: 1}, 4:{3: 1}, 2:{4: 1}, 4:{2: 1}}
因为有两对2-3和3-2。如果给定一个列表中有多个列表,那么如何“更新”字典?在
这是一个算法问题,我不知道最有效的解决方案。我的想法是以某种方式将值缓存在一个列表中并枚举对…但这太慢了。我猜itertools
中有一些有用的东西。在
{g}每一个问题的复杂度都取决于第一个问题列表的复杂度,将这些插入到输出dict(恒定复杂性)。在
我很确定有一种更精细的方法来做这件事(同样,这取决于你问题的确切规格),但这可能会让你开始(没有进口)
你要做的是对列表中的组合产生的对进行计数。你可以找到那些带有
Counter
和combinations
的。在输出
^{pr2}$至于列表列表,我们用每个子列表的结果更新
Counter
。在输出
相关问题 更多 >
编程相关推荐