我有字典的列表,其中每个字典的形式是:在python遍历计数对
{'A': a,'B': b}
我想通过列表,并为每一个(A,B)对迭代,找到一对(s),(b,a)(如果存在)。
例如,如果对于列表A = 13和B = 14的给定条目,则原始对将是(13,14)。我想搜索整个列表的列表来找到这对(14,13)。如果(14,13)发生多次,我也想记录下来。
我想计算列表中所有原始(a,b)对的次数,补数(b,a)出现时的次数,如果是,则计算次数。要做到这一点,我有两个for循环和一个计数器,当找到补充对。
pairs_found = 0
for i, val in enumerate(list_of_dicts):
for j, vol in enumerate(list_of_dicts):
if val['A'] == vol['B']:
if vol['A'] == val['B']:
pairs_found += 1
这产生比的list_of_dicts
长度大一个pairs_found
。我意识到这是因为相同的配对将被过度计数。我不知道我该如何克服这种退化?
编辑的清晰度
list_of_dicts = []
list_of_dicts[0] = {'A': 14, 'B', 23}
list_of_dicts[1] = {'A': 235, 'B', 98}
list_of_dicts[2] = {'A': 686, 'B', 999}
list_of_dicts[3] = {'A': 128, 'B', 123}
....
比方说,该清单有大约10万项。在该列表中的某处,将会有一个或多个条目,形式为{'A'23,'B':14}。如果这是真的,那么我想要一个柜台来增加一个价值。我想为列表中的每个值做这件事。
问题缺乏希望输出的例子 – timgeb
我的理解很少..你可以通过张贴示例输入,期望的输出*对*来详细阐述你的循环方式,你也在比较它们自己。你可以像'if i == j:continue'那样做,以避免这种情况 –
你需要提供一个更清晰的描述什么是期望的输出。在这种情况下你会计算多少对:[{'A':a ,'B':b},{'A':a,'B':b},{'A':b,'B':a}]? – jadsq