【问题标题】:Find unique list of tuples irrespective of order inside tuple查找元组的唯一列表,而不管元组内的顺序如何
【发布时间】:2021-01-02 19:28:08
【问题描述】:

给定输入:

[('is','my','order'), ('my','order', 'is'), ('temp', 'ques'), ('ques','temp')]

期望的输出:

[('is','my','order'), ('temp', 'ques')]

在输出中,元组的顺序或元组内容的顺序无关紧要。

【问题讨论】:

  • 如果他们的顺序无关紧要,可以考虑首先使用sets(而不是元组)。

标签: python python-3.x string tuples


【解决方案1】:

因为对你来说订单无所谓,你可以使用set来实现这个:

>>> input_list = [('is','my','order'), ('my','order', 'is'), ('temp', 'ques'), ('ques','temp')]

>>> set(tuple(sorted(l)) for l in input_list)
set([('ques', 'temp'), ('is', 'my', 'order')])

首先对每个嵌套元组的内容进行排序,以确保您的集合将具有共同项目的元组视为相同。然后我再次将其类型转换为tuple,因为sorted 返回不可散列的list。最后,set 删除元组的重复条目。

详情请咨询"set" documentation

【讨论】:

  • 只有这里可以有初始数据中没有的选项
【解决方案2】:

您可以对每个子列表进行排序,然后将它们添加到列表中,删除所有重复项

output_list = []
for tup in map(sorted, tuple_list):
  if tup not in output_list:
    output_list.append(tup)
print(output_list)

【讨论】:

    【解决方案3】:
    mytuples = [('one','two'), ('two','one)]
    myset=set()
    for x in mytuples:
        myset.update(x)
    
    print(myset)
    output {'two', 'one'}
    

    这将为您提供数据集中所有唯一值的集合。也许没有帮助

    因此,假设您要保留元组结构,您可能必须将每个元组与具有相同长度的每个其他元组进行检查

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 2019-10-02
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多