我试图从python中的列表中查找并替换元组。这是一个例子:
tup_list = [(u'I', u'NSUBJ'), (u'had', u'INTAKE'), (u'3', u'QUANTITY'),
(u'slices', u'UNIT'), (u'of', u'IN'), (u'chicken fajita
pizza',u'FOOD'), (u'and', u'CC'), (u'a', u'DT'),
(u'cup', u'UNIT'), (u'of', u'IN'), (u'coffee', u'FOOD'), (u'this',
u'DT'), (u'morning', u'TIMESLOT')]
从tup_list获取食物元组后:
food_list = [x for x in tup_list if x[1] == "FOOD"]
food_list
[(u'chicken fajita pizza', u'FOOD'), (u'coffee', u'FOOD')]
进行一些处理我得到了food_list元组列表
food_list = [(u'chicken fajita', u'FOOD', 1),(u'||',u'F'),
(u'pizza',u'FOOD', 1),(u'||',u'F'),(u'coffee', u'FOOD'),(u'||',u'F')]
现在我要替换
(你的鸡肉法式披萨',你' FOOD')
带
(p'鸡肉鸡汤',你'食物',1)(你的比萨',你'食物',1)
并且插入上面的元组后,元组的顺序应该相同。同样应该应用于(u'coffee', u'FOOD')
元组,结果应该如下所示。
tup_list
[(u'I', u'NSUBJ'), (u'had', u'INTAKE'), (u'3', u'QUANTITY'),
(u'slices', u'UNIT'), (u'of', u'IN'), (u'chicken fajita', u'FOOD', 1),
(u'pizza', u'FOOD', 1), (u'and', u'CC'), (u'a', u'DT'),
(u'cup',u'UNIT'),(u'of', u'IN'), (u'coffee', u'FOOD', 1),
(u'this',u'DT'), (u'morning', u'TIMESLOT')]
这是有一些问题的代码
for idx, tup in enumerate(food_list):
for i, t in enumerate(tup_list):
c = i
if t[1] in tup[1]:
for k, l in enumerate(food_list):
if l[1] == "FOOD":
print("replacing ", t)
print("inserting", l)
print("at===", c)
tup_list.insert(c, l)
c += 1
print(c)
print("popping from verified food", l)
food_list.pop(k)
else:
break
print("popping", tup_list[c])
tup_list.pop(c)
break
它取代了食物,但顺序错误,也省略了(u'coffee', u'FOOD')
元组,这是输出:
tup_list
[(u'I', u'NSUBJ'),
(u'had', u'INTAKE'),
(u'3', u'QUANTITY'),
(u'slices', u'UNIT'),
(u'of', u'IN'),
(u'chicken fajita', u'FOOD', 1),
(u'pizza', u'FOOD', 1),
(u'coffee', u'FOOD'),
(u'and', u'CC'),
(u'a', u'DT'),
(u'cup', u'UNIT'),
(u'of', u'IN'),
(u'coffee', u'FOOD'),
(u'this', u'DT'),
(u'morning', u'TIMESLOT')]