簡體   English   中英

如何在python中的多個元組列表中搜索唯一的元組

[英]How to search unique tuples in multiple list of tuples in python

如果我有

a = [("1","2"),("5","6")]  [("3","4"), ("5","6")] [("5","7"), ("2","3")]

如何搜索元組列表以獲得有序的唯一元組列表說:

B = [("1","2"),("5","6"), ("3","4"), ("5","7"), ("2","3")]

Unique = []
for tuple in a:
    If tuple not in Unique:
        Unique.append (tuple)

給出與 a 相同的元組列表。

編輯:

由於沒有一個解決方案對我有用,我給出了實際問題:

我有一個包含四個句子的文本文件,例如:

  1. 這是 utf-8 line1
  2. 這是 eng line 1
  3. 這是 utf 第 2 行
  4. 這是 eng line 2

我將第 1 行和第 3 行提取到變量 (utfvar),將第 2 行和第 4 行提取到 (engvar)。 然后創建元組:

UtfEng = list (zip (utfvar,engvar))

打印UtfEng是:

[('This','This'), ('is','is')...('line','line'),('1','1')]
[('This','This'), ('is','is')...('line','line'),('2','2')]

我想從中提取獨特的元組:

[('This','This'), ('is','is')...('line','line'),('1','1'),('2','2')]

正如@jonrsharpe 在評論中所寫,這不是一個有效的 python。

但是假設您有三個列表。

>>> a = [("1","2"),("5","6")] ;b= [("3","4"), ("5","6")];c= [("5","7"), ("2","3")]

合並那些,

>>> a+b+c

會給你,

[('1', '2'), ('5', '6'), ('3', '4'), ('5', '6'), ('5', '7'), ('2', '3')]

那么你就可以

>>> list(set(a+b+c))
[('2', '3'), ('1', '2'), ('5', '7'), ('5', '6'), ('3', '4')]

這會給你獨特的元組。

文件

假設您輸入數據的這種格式(因為您發布的代碼被破壞):

a = [[("1","2"),("5","6")], [("3","4"), ("5","6")], [("5","7"), ("2","3")]]

先將列表展平,然后做你之前做的:

flattened_list = [item for sublist in a for item in sublist]

Unique = []
for pair in flattened_list:
    if pair not in Unique:
        Unique.append(pair)

print(Unique)

它們是包含元組的列表列表...我想生成一個唯一元組列表

使用collections.Counter對象的解決方案:

import collections

a = [[("1","2"),("5","6")], [("3","4"), ("5","6")], [("5","7"), ("2","3")]]
c = collections.Counter([t for l in a for t in l])
unique_tuples = [t for t in c.keys()]

print(unique_tuples)

輸出:

[('3', '4'), ('5', '7'), ('1', '2'), ('2', '3'), ('5', '6')]

https://docs.python.org/3.1/library/collections.html#collections.Counter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM