通过维护order python,从另一个元组列表中查找和替换列表中的元组

时间:2017-07-07 22:53:54

标签: python-2.7 list tuples

我试图从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')]

0 个答案:

没有答案