我有字典的列表,其中每個字典的形式是:在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