从嵌套列表中的特定点获取唯一值
Getting unique values from specific point in a nested list
我有一个这样的列表:
$ mylist = [(u'nr',<object>,'string1'),(u'fm',<object>,'string2'),(u'nr',<object>,'string3')]
我想从该列表中获取 nr
和 fm
的唯一值(即第一个元素没有重复值)。
我一直在寻找使用 set()
等获取唯一列表的方法,并且我尝试了这个(来自另一个线程):
$ unique = reduce(lambda l, x: l.append(x) or l if x not in l else l, mylist, [])
但这没有用。
被要求澄清:我希望最终结果['nr','fm']
这将产生元组列表的唯一第一个值:
set(x[0] for x in mylist)
如果你想把它返回到列表中:
list(set(x[0] for x in mylist))
尝试:
list(set(tpl[0] for tpl in mylist))
解释:
将问题分成几个阶段:
从嵌套列表中获取索引 0 处的所有项目:
first_items_in_nested = (tpl[0] for tpl in mylist)
从第 1 步中获取唯一值:
unique_items = set(first_items_in_nested)
(可选)将结果转换回列表:
result = list(unique_items)
我有一个这样的列表:
$ mylist = [(u'nr',<object>,'string1'),(u'fm',<object>,'string2'),(u'nr',<object>,'string3')]
我想从该列表中获取 nr
和 fm
的唯一值(即第一个元素没有重复值)。
我一直在寻找使用 set()
等获取唯一列表的方法,并且我尝试了这个(来自另一个线程):
$ unique = reduce(lambda l, x: l.append(x) or l if x not in l else l, mylist, [])
但这没有用。
被要求澄清:我希望最终结果['nr','fm']
这将产生元组列表的唯一第一个值:
set(x[0] for x in mylist)
如果你想把它返回到列表中:
list(set(x[0] for x in mylist))
尝试:
list(set(tpl[0] for tpl in mylist))
解释:
将问题分成几个阶段:
从嵌套列表中获取索引 0 处的所有项目:
first_items_in_nested = (tpl[0] for tpl in mylist)
从第 1 步中获取唯一值:
unique_items = set(first_items_in_nested)
(可选)将结果转换回列表:
result = list(unique_items)