【发布时间】:2014-06-21 22:23:57
【问题描述】:
我有一个字典列表,而我当前的列表理解是分隔字典(即,在以前没有字典的地方创建新字典)。下面是一些示例代码来帮助说明问题。
list_of_dicts = [{"this": "hi<br>", "that":"bye"}, {"this": "bill", "that":"nye"},{"hello":"kitty<br>", "good bye": "to all of that"}]
因此,如您所见,我有一个列表,其len() 是三个。每个项目都是一个包含两个键和两个值的字典。
这是我的列表理解:
list_of_dicts = [{key: val.replace("<br>", " ")} for dic in list_of_dicts for key, val in dic.items()]
如果你打印这个新行的len(),你会注意到我现在有六个字典。我相信我正在尝试做的事情——即将值中的"<br>" 替换为一个空格(" ")——是可能的,但我不知道怎么做。
到目前为止,我已经尝试了所有我知道的方法来创建字典而不是 {key: val.method()}。我唯一没有尝试过的是三元列表理解,因为我可以看到它太长了,以至于我永远不会在生产代码中使用它。
有什么见解吗?我可以在不影响字典初始结构的情况下在列表理解中操纵某些字典的值吗?
【问题讨论】:
-
为什么必须是列表理解;为什么不按常规方式遍历列表?
-
这只是偏好。我可以比嵌套代码更容易阅读列表推导。
-
@jonrsharpe 感谢您的编辑。我的问题总是非常令人困惑。你可能为我赢得了一个非常罕见的支持,所以谢谢:)
标签: python python-2.7 dictionary syntax list-comprehension