📜  Python – 从列表中提取相似对

📅  最后修改于: 2022-05-13 01:54:59.045000             🧑  作者: Mango

Python – 从列表中提取相似对

有时,在使用Python列表时,我们可能会遇到需要提取列表中所有元素对的问题。这类问题可以应用在 Web 开发和日常编程等领域。让我们讨论可以执行此任务的某些方式。

方法 #1:使用Counter() + 列表推导
上述功能的组合可以用来解决这个问题。在此,使用 Counter() 提取频率,并使用列表理解完成对构造。

# Python3 code to demonstrate working of 
# Extract Similar pairs from List
# Using Counter() + list comprehension
from collections import Counter
  
# initializing list
test_list = [4, 6, 7, 4, 2, 6, 2, 8]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Extract Similar pairs from List
# Using Counter() + list comprehension
res = [(key, key) for key, val in Counter(test_list).items() 
                                  for _ in range(val // 2)]
  
# printing result 
print("The records after pairing : " + str(res)) 
输出 :
The original list is : [4, 6, 7, 4, 2, 6, 2, 8]
The records after pairing : [(4, 4), (6, 6), (2, 2)]

方法 #2:使用fromkeys() + 列表推导
这是可以执行此任务的另一种方式。在此,我们使用字典的 fromkeys() 和 get() 执行 Counter() 的任务,即获取频率。

# Python3 code to demonstrate working of 
# Extract Similar pairs from List
# Using fromkeys() + list comprehension
  
# initializing list
test_list = [4, 6, 7, 4, 2, 6, 2, 8]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Extract Similar pairs from List
# Using fromkeys() + list comprehension
temp = dict.fromkeys(test_list, 0)
for key in test_list:
    temp[key] += 1
res = [(key, key) for key, val in temp.items() for _ in range(val // 2)]
  
# printing result 
print("The records after pairing : " + str(res)) 
输出 :
The original list is : [4, 6, 7, 4, 2, 6, 2, 8]
The records after pairing : [(4, 4), (6, 6), (2, 2)]