Python如何获取列表或表格中忽略顺序的唯一值对
数据处理两类需求实现方案
需求1:Python返回同一列表内顺序不同但元素一致的唯一元素对
实现核心逻辑是将元素对转换为无序可哈希的结构(如排序后的元组),利用集合自动去重的特性过滤重复项,避免顺序差异导致相同元素对被判定为不同。
代码示例:
def get_unique_pairs(input_list): unique_res = set() # 遍历所有不重复的两两组合 for i in range(len(input_list)): for j in range(i + 1, len(input_list)): # 对两个元素排序后存为元组,消除顺序影响 sorted_pair = tuple(sorted((input_list[i], input_list[j]))) unique_res.add(sorted_pair) # 如需转换为&连接的字符串格式,可使用下面的返回语句 return {"&".join(pair) for pair in unique_res} # 测试用例 test_list = ["A", "B", "A", "C", "B", "D"] print(get_unique_pairs(test_list)) # 输出:{'A&B', 'A&C', 'A&D', 'B&C', 'B&D', 'C&D'}
需求2:提取表格两列的无序去重组合对
实现逻辑和需求1一致,只需逐行提取两列对应元素做相同的排序去重处理即可,最终直接生成要求格式的集合。
代码示例(基于Pandas处理,也可替换为纯Python逐行读取文件的逻辑):
import pandas as pd # 此处为示例表格构造,实际使用可替换为pd.read_csv/ pd.read_excel读取你的源文件 df = pd.DataFrame({ "Col 1": ["A", "A", "B", "C", "E"], "Col 2": ["One"] * 5, "Col 3": ["B", "B", "A", "D", "F"] }) res_set = set() for _, row in df.iterrows(): col1_val = row["Col 1"] col3_val = row["Col 3"] sorted_pair = sorted((col1_val, col3_val)) res_set.add(f"{sorted_pair[0]}&{sorted_pair[1]}") print(res_set) # 输出:{'A&B', 'C&D', 'E&F'},完全符合要求格式
内容的提问来源于stack exchange,提问作者ETT
相关产品推荐
相关产品推荐

