python比较具有相同索引的元组列表中的元素

时间:2017-07-13 15:16:51

标签: python

我有一个元组列表:

list = [(u'RHSA-2017:1270', u'Red Hat Enterprise Linux 6'), (u'RHSA-2017:1271', u'Red Hat Enterprise Linux 6'), (u'RHSA-2017:1270', u'Red Hat Enterprise Linux 7')]

我需要比较每个元组的index1元素,即

'Red Hat Enterprise Linux 6'

对于前2个元组是相同的

和元组3中的第一个索引元素,即:

'Red Hat Enterprise Linux 7'

我的目标是,一旦我检测到元组2中的元素索引1是重复的

从列表中删除此元组。

我已经尝试使用所需的元组创建一个新列表

空列表

new_list = []
for i in list:
    rhel_ver = str(i[1])
    if rhel_ver not in i:
         new_list.append(i)

获取空列表。我怎样才能得到第一个包含的元组 rhel版本,即:

list = [(u'RHSA-2017:1270', u'Red Hat Enterprise Linux 6'), (u'RHSA-2017:1270', u'Red Hat Enterprise Linux 7')]

3 个答案:

答案 0 :(得分:2)

您可以使用内置的any制作新的唯一列表:

my_list = [(u'RHSA-2017:1270', u'Red Hat Enterprise Linux 6'), (u'RHSA-2017:1271', u'Red Hat Enterprise Linux 6'),
           (u'RHSA-2017:1270', u'Red Hat Enterprise Linux 7')]

unique_list = []
for element in my_list:
    if not any(tup[1] == element[1] for tup in unique_list):
        unique_list.append(element)

print(unique_list)

答案 1 :(得分:2)

您可以跟踪extensions [ rnd ] globals [ pcolor-list ] to setup ca reset-ticks ask patches [ set pcolor random 10 + 50 ] end to go check tick end to check set pcolor-list [] repeat 10 [ ask rnd:weighted-one-of patches [ pcolor ] [ set pcolor-list lput pcolor pcolor-list ] ] end 中已经看过的元素:

library(RNetLogo)

nl.path <- "C:/test_rnetlogo/app"

model.path <- "C:/test_rnetlogo/test_rnd.nlogo"

NLStart(nl.path, gui = FALSE, nl.jarname = "netlogo-6.0.1.jar")

NLLoadModel(model.path)

NLCommand("setup")
NLCommand("Go")
test <- NLReport("pcolor-list")

> print(test)
 [1] 53 53 50 57 50 53 50 58 58 51

答案 2 :(得分:0)

您可以使用python OrderedDict创建一个新列表,将索引1(元组中的第二个元素)设置为键。这将删除任何重复。然后,您可以从Ordered Dict生成一个新列表。 python 2.7

import collections
tagPairs=collections.OrderedDict()

lst = [(u'RHSA-2017:1270', u'Red Hat Enterprise Linux 6'), 
       (u'RHSA-2017:1271', u'Red Hat Enterprise Linux 6'), 
       (u'RHSA-2017:1270', u'Red Hat Enterprise Linux 7')]
for i,v in lst:
    tagPairs[v]=i
unique_list=[]
for k,j in tagPairs.items():
    unique_list.append((j,k))
print unique_list

import collections tagPairs=collections.OrderedDict() lst = [(u'RHSA-2017:1270', u'Red Hat Enterprise Linux 6'), (u'RHSA-2017:1271', u'Red Hat Enterprise Linux 6'), (u'RHSA-2017:1270', u'Red Hat Enterprise Linux 7')] for i,v in lst: tagPairs[v]=i unique_list=[] for k,j in tagPairs.items(): unique_list.append((j,k)) print unique_list