0

我有一个这样的列表:

$ mylist = [(u'nr',<object>,'string1'),(u'fm',<object>,'string2'),(u'nr',<object>,'string3')]

我想从该列表中获取唯一值nrfm即,第一个元素没有重复值)。

我一直在寻找使用set()等获取唯一列表,并且我尝试了这个(来自另一个线程):

$ unique = reduce(lambda l, x: l.append(x) or l if x not in l else l, mylist, [])

但这没有用。

被要求澄清:我希望 ['nr','fm'] 在最终结果中

4

2 回答 2

1

这将产生一个元组列表的唯一的第一个值:

set(x[0] for x in mylist)

如果你想让它回到一个列表:

list(set(x[0] for x in mylist))
于 2018-02-27T03:38:19.857 回答
1

尝试:

list(set(tpl[0] for tpl in mylist))

解释:
把问题分解成几个阶段:

  1. 从嵌套列表中获取索引 0 处的所有项目:

    first_items_in_nested = (tpl[0] for tpl in mylist)  
    
  2. 从步骤 1 中获取唯一值:

    unique_items = set(first_items_in_nested)
    
  3. (可选)将结果转换回列表:

    result = list(unique_items)
    
于 2018-02-27T03:59:35.837 回答