python - 列表理解中的奇怪拆包

标签 python python-3.x list-comprehension iterable-unpacking pep448

我在看a lecture from David Beazley .在第 23:20 分钟,他做了一些我很难理解的打开包装的“魔术”。

“魔法线”是

fail = [ { **row, 'DBA Name': row['DBA Name'].replace("'",'').upper() } for row in fail ]

我已经搜索过类似的示例,但找不到。你能解释一下这段代码中发生了什么吗?你能给我指出一些类似的例子吗?

最佳答案

该代码片段在添加新元素的同时,将字典文字中已有的映射 row 解包。一个证明这一点的简化示例:

>>> r = {'a':1, 'b':2}    
>>> {**r, 'Spam': 20}
{'Spam': 20, 'a': 1, 'b': 2}

此解包仅在 Pythons >= 3.5 中可用,如 PEP 448 所介绍的那样;在以前的版本中,它是一个 SyntaxError

关于python - 列表理解中的奇怪拆包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45758773/

相关文章:

python - 将排序列表重新映射到字典中

python - 如何通过输入的更改来自动化单行代码?

django - 如何模拟 celery 任务的绑定(bind)上下文

python - 在Python中维护集合或列表理解中的序列类型

python - dpkg 问题,重新安装 Python;系统找不到 'independent libraries <prefix>'?

python - 用模拟替换对象

python - 将列表中的每个元素与另一个列表中相应的索引进行比较

python - Boost Python,Visual Studio 不创建 DLL

python - 将 HTML 转换为纯文本并保留基本格式

javascript - 将两个列表转换为 X 和 Y 格式的字典