为什么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)