gpt4 book ai didi

python - 如何以正确的顺序在 Python 中构建嵌套字典理解?

转载 作者:太空宇宙 更新时间:2023-11-03 12:28:04 25 4
gpt4 key购买 nike

我试图缩短 this problem 的代码当我遇到问题时。

基本上,我在尝试嵌套字典理解,但没有成功。这是我尝试过的。

dict2 = {key:value for key, value in line.split(":")
for line in ["1:One", "2:Two", "4:Four"]}
print dict2

当我运行它时,它给了我

NameError: name 'line' is not defined

而且,当我像这样反转 for 语句时

dict2 = {key:value for line in ["1:One", "2:Two", "4:Four"]
for key, value in line.split(":")}
print dict2

结果

ValueError: need more than 1 value to unpack

我需要有关dictionary(或list)理解的嵌套结构的帮助。一个例子会有很大帮助。

最佳答案

请注意,有一种更好的方法可以在不理解字典的情况下执行此操作;见下文。我将首先解决您的方法存在的问题。

您需要在理解中使用嵌套顺序。按照嵌套常规循环时的相同顺序列出您的循环。

line.split() 表达式返回两个项目的序列,但这些项目中的每一个都不是键和值的元组;相反,只有 一个 元素被迭代。将拆分包装在一个元组中,这样您就有了一个 (key, value) 项目的“序列”,将两个结果分配给两个项目:

dict2 = {key:value for line in ["1:One", "2:Two", "4:Four"]
for key, value in (line.split(":"),)}

这相当于:

dict2 = {}
for line in ["1:One", "2:Two", "4:Four"]:
for key, value in (line.split(":"),):
dict2[key] = value

只需要嵌套循环,因为你不能这样做:

dict2 = {}
for line in ["1:One", "2:Two", "4:Four"]:
key, value = line.split(":")
dict2[key] = value

但是,在这种情况下,您应该使用 dict() 构造函数而不是字典理解。它想要二元序列,简化了整个操作:

dict2 = dict(line.split(":") for line in ["1:One", "2:Two", "4:Four"])

关于python - 如何以正确的顺序在 Python 中构建嵌套字典理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20446526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com