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]
答案 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)]