这个问题之前已经有人问过,但有一个明显的拼写错误:在Python字典中计算“唯一对”的数量?
这是一个算法问题,我不知道最有效的解决方法。我的想法是以某种方式在列表中缓存值并枚举成对的数字......但是这样太慢了。我猜想从
假设我有一个整数列表,其中没有重复的数字:
在这种情况下,存在唯一的一对2-3和3-2,因此字典应为:
itertools
中可能会有用的东西。假设我有一个整数列表,其中没有重复的数字:
list1 = [2, 3]
在这种情况下,存在唯一的一对2-3和3-2,因此字典应为:
{2:{3: 1}, 3:{2: 1}}
也就是说,有1对2-3和1对3-2。
对于更大的列表,配对方式相同,例如:
list2 = [2, 3, 4]
拥有字典
{2:{3:1, 4:1}, 3:{2:1, 4:1}, 4:{3:1, 2:1}}
(1) 当列表的大小变得非常大时,如何使用Python数据结构算法地查找这种格式中的“唯一对”?
(2) 我提到列表不能有重复的整数,例如:
[2, 2, 3]
由于存在两个2,所以不可能。
然而,可以有一个列表的列表:
list3 = [[2, 3], [2, 3, 4]]
其中字典必须是
{2:{3:2, 4:1}, 3:{2:2, 4:1}, 4:{2:1, 3:1}}
由于存在两对2-3和3-2,如果在列表中有多个列表,如何“更新”字典?
编辑:我的最终用例是,我想遍历数百个整数列表,并创建一个包含成对“计数”的单个字典。这有意义吗?可能有另一种更有用的数据结构。
{2:{3: 2, 4: 1}, 3:{2: 2, 4: 1}, 4:{3: 1, 2: 1}}
,这样更有意义。 - user2390182