如何提取两个元组中首字符串相同的元素,优先用列表推导式实现
方案可行性说明
带过滤器的列表推导式完全可以实现该需求,实现逻辑非常简洁。
实现步骤
- 先提取两个元组中所有元素的首字段,取交集得到同时在双方出现的字段集合,作为过滤依据
- 按你需要的顺序拼接两个元组,用列表推导式过滤出首字段属于交集的元素,最后转为元组即可
代码示例
a = (('we', 23), ('b', 2)) b = (('we', 3), ('e', 3), ('b', 4)) # 提取共同首字段 common_keys = {item[0] for item in a} & {item[0] for item in b} # 带过滤的列表推导式筛选,拼接顺序b在前a在前和预期输出顺序一致 result = tuple([item for item in b + a if item[0] in common_keys]) print(result) # 输出:(('we', 3), ('b', 4), ('we', 23), ('b', 2)),和预期完全匹配
如果希望减少变量定义,也可以把交集计算直接写到推导式的过滤条件中:
result = tuple([item for item in b + a if item[0] in {i[0] for i in a} & {i[0] for i in b}])
内容的提问来源于stack exchange,提问作者user14004788
相关产品推荐
相关产品推荐

