首页 > 解决方案 > 为什么 Python .append() 会附加两个值,而不是列表中的一个?

问题描述

我有两个列表和一个字典:

a = ['Foo bar', 'Hello!']
b = {'Foo': 'bar', 'Hello': 'foo'}
c = []

我试图每个元素中用barHello替换Foo并将新值附加到.ac

然而,这段代码给出了以下输出:

for i in a:
    for entry in b:
        c.append(i.replace(entry, b.get(entry)))

print(c)
['bar bar', 'Foo bar', 'Hello!', 'foo!']

预期输出:

['bar bar', 'foo!']

我期望该c列表仅包含修改后的值,而不是原始值。

我错过了什么吗?

标签: pythonpython-3.xlist

解决方案


您遇到的问题是您总是为字典中的每个值附加,您应该建立一个字符串,然后在检查字典后附加它。您还可以使用字典items来避免将值与键分开

for i in a:
    new_val = i
    for key, val in b.items():
        new_val = new_val.replace(key, val)
    c.append(new_val)

推荐阅读