为什么Python.append()会附加两个值,而不是列表中的一个值?

为什么Python.append()会附加两个值,而不是列表中的一个值?,python,python-3.x,list,Python,Python 3.x,List,我有两份名单和一份口述: a = ['Foo bar', 'Hello!'] b = {'Foo': 'bar', 'Hello': 'foo'} c = [] 我试图在每个a元素中用bar替换Foo,用Foo替换Hello,并将新值附加到c Hovewer,此代码提供以下输出: for i in a: for entry in b: c.append(i.replace(entry, b.get(entry))) print(c) 预期产出: 我希望c列表只包含修

我有两份名单和一份口述:

a = ['Foo bar', 'Hello!']
b = {'Foo': 'bar', 'Hello': 'foo'}
c = []
我试图在每个
a
元素中用bar替换Foo,用Foo替换Hello,并将新值附加到
c

Hovewer,此代码提供以下输出:

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

print(c)
预期产出: 我希望
c
列表只包含修改后的值,而不是原始值

我遗漏了什么吗?

这应该可以:

a = ['Foo bar', 'Hello!']
b = {'Foo': 'bar', 'Hello': 'foo'}
c = []
for i in a:
    c.append(i)
    for entry in b:
        c[-1] = c[-1].replace(entry, b.get(entry))

print(c)
输出:

['bar bar', 'foo!']

当前代码的问题是每次替换时都会追加一个新项-您只想编辑最后一项。

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

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

您运行了2x2次,因此预计将追加4项。已更改为修复-错过重新分配:)
['bar bar', 'foo!']
for i in a:
    new_val = i
    for key, val in b.items():
        new_val = new_val.replace(key, val)
    c.append(new_val)