python比较列表并替换列表元素

时间:2016-10-25 21:35:52

标签: python list python-2.7 comparison

如果列表中的前一个元素存在于第二个列表中,我需要将'default'替换为'custom'。我正在寻找更好的解决方案和更多的Pythonic方法来实现这一目标。

base_list = [[1, 'post', 'default'], 
             [2, 'reply', 'default'],
             [3, 'register', 'default']]

custom_list = ['post', 'register']


for element in custom_list:
    for item in base_list:
        if element == item[1]:
            item[2] = 'custom'

print base_list
>>> [[1, 'post', 'custom'], [2, 'reply', 'default'], [3, 'register', 'custom']]

2 个答案:

答案 0 :(得分:1)

我使用in运算符:

for item in base_list:
    if item[1] in custom_list:
        item[2] = 'custom'

如果custom_list很大,我会将其设为set

答案 1 :(得分:0)

您可以通过列表理解实现以下目标:

[[item[0], item[1], 'custom'] if item[1] in custom_list else item for item in base_list]
# Output: [[1, 'post', 'custom'], [2, 'reply', 'default'], [3, 'register', 'custom']]