这里,数组有两个维度(字符和数字),我想通过仅考虑下面myList
中的数字的第二维来获得唯一项。我通过使用其他列表(a_list
)完成了这项工作,但我正在寻找更好的方法。
myList=[]
myList.append(("a",0))
myList.append(("b",0))
myList.append(("b",0))
myList.append(("a",1))
myList.append(("a",1))
distinctmyList =[]
a_list=[]
for i in myList:
a_list.append(i[1])
distinctmyList.append(list(set(a_list)))
print distinctmyList
输出:
[[0, 1]]
这是myList
的唯一项目,尊重第二项,即数字(0和1)。
答案 0 :(得分:2)
您可以使用set来获取唯一商品。但首先你需要提取数字,你可以使用generator expression中的元组扩展来完成。
>>> print set(number for character, number in myList)
set([0, 1])
<强>更新强>
这是一个符合您更改要求的版本。
>>> from collections import OrderedDict
>>> lst = [('a', 0), ('b', 0), ('b', 0), ('a', 2), ('a', 1), ('a', 1)]
>>> print list(reversed(OrderedDict((x[1], x) for x in reversed(lst)).values()))
[('a', 0), ('a', 2), ('a', 1)]
答案 1 :(得分:1)
希望你正在寻找这样的东西:
>>> print list(set([x[1] for x in myList]))
[0, 1]
答案 2 :(得分:1)
你可以简单地做这样的事情
print list(set(zip(*myList)[1]))
编辑:根据您在评论中的要求
myList=[]
myList.append(("a",0))
myList.append(("b",0))
myList.append(("b",0))
myList.append(("a",1))
myList.append(("a",1))
Dict = {}
for Data in myList :
Dict.setdefault(Data[1], []).append(Data[0])
print [(values[0], key) for key, values in Dict.items()]
<强>输出强>
[('a', 0), ('a', 1)]
EDIT1:保留订单的解决方案
myList=[]
myList.append(("a",0))
myList.append(("b",0))
myList.append(("b",0))
myList.append(("a",2))
myList.append(("a",1))
myList.append(("a",1))
Dict = {}
Unique = []
for Data in myList :
Dict.setdefault(Data[1], []).append(Data[0])
if Data[1] not in Unique: Unique.append(Data[1])
print [(Dict[Data][0], Data) for Data in Unique]
<强>输出强>
[('a', 0), ('a', 2), ('a', 1)]