python - 为什么 Python .append() 会附加两个值,而不是列表中的一个?
问题描述
我有两个列表和一个字典:
a = ['Foo bar', 'Hello!']
b = {'Foo': 'bar', 'Hello': 'foo'}
c = []
我试图在每个元素中用bar和Hello替换Foo并将新值附加到.a
c
然而,这段代码给出了以下输出:
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
列表仅包含修改后的值,而不是原始值。
我错过了什么吗?
解决方案
您遇到的问题是您总是为字典中的每个值附加,您应该建立一个字符串,然后在检查字典后附加它。您还可以使用字典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)
推荐阅读
- xslt - XSLT:谓词内 key() 的行为
- python - 重采样错误:ValueError:无法使用方法或限制重新索引非唯一索引
- java - 自动生成代码以动态创建 Java 对象(反射)
- python - SQLite3 在第二个查询中绑定的数量不正确
- python-3.x - 是否有一个名为 document_base 的包?
- python - Pip3 和 python 不同步 | ModuleNotFoundError:没有名为“numpy”的模块`
- python - 嵌套python类(或django外键)的正确方法。*概念/工程问题*
- c# - 在后面的代码中创建文本框后使用文本框
- java - javax.xml.bind.JAXBException 与 Java 11
- c# - 对上下文的异步请求引发异常