搜索元组的列表,并在另一个列表中交换tup [2]的tup [2]

时间:2014-11-17 22:38:32

标签: python list tuples list-comprehension

x =  [(u'red', 3.5, u'rouge'), (u'green', 2.6, u'vert'), (u'blue', 1.45, u'blu')]

y = [('bue', 14.5), ('red', 140.0), ('green', 130.0), ('', 0.0)]

我想搜索x代表y [0]并将x [0]更改为y [0]如果找到了。

我一直在收到TypeError:当我尝试遍历元组时,list indices必须是整数,而不是元组。

对不起我的解释,我会再试一次。

x = [('a', 'b','c'),('d','e','f'),('g','h','i')]
y = [('zzz',10), ('xxx',20), ('yyy',30)]

我希望最终得到一个y =[('c', 10),('f',20),('i',30)]

的列表

我尝试了很多东西,但我是python的新手,并尝试了以下

for tup  in x:
      results = [(tup[2]) for tup in x]

for tup in x:
    if tup[0] == y[tup[0]]:
        y[tup[0]] = tup[2]

1 个答案:

答案 0 :(得分:1)

这是对您的问题的字面解释,如果y[0][0] 'blue'位于x中的任何元组中,则将该元组交换为y[0],我认为该元组包含blue {1}}不bue因此x[2]变为y[0]

x = [(u'red', 3.5, u'rouge'), (u'green', 2.6, u'vert'), (u'blue', 1.45, u'blu')]

y = [('blue', 14.5), ('red', 140.0), ('green', 130.0), ('', 0.0)]

for ind, tup in enumerate(x):
    if y[0][0] in tup:
        x[ind] = y[0]
print(x)
[(u'red', 3.5, u'rouge'), (u'green', 2.6, u'vert'), ('blue', 14.5)]

或使用列表推导并创建新列表:

print([y[0]  if tup[0] == y[0][0] else tup for tup in x])
[(u'red', 3.5, u'rouge'), (u'green', 2.6, u'vert'), ('blue', 14.5)]

只交换元素:

x = [('a', 'b','c'),('d','e','f'),('g','h','i')]
y = [('zzz',10), ('xxx',20), ('yyy',30)]


for ind,ele in enumerate(x):
    y[ind] = (ele[-1],y[ind][1])
print(y)
[('c', 10), ('f', 20), ('i', 30)]