如何用正确的顺序在Python中构造嵌套字典理解?
发布时间:2020-12-20 12:23:38 所属栏目:Python 来源:网络整理
导读:当我遇到问题时,我试图缩短 this problem的代码. 基本上,我正在尝试嵌套词典理解这次尝试没有成功. 这是我试过的. dict2 = {key:value for key,value in line.split(":") for line in ["1:One","2:Two","4:Four"]}print dict2 当我运行它时,它给了我 NameErr
当我遇到问题时,我试图缩短
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","4:Four"] for key,value in line.split(":")} print dict2 它导致了 ValueError: need more than 1 value to unpack 我需要有关字典(或列表)理解的嵌套结构的帮助.一个例子可以帮助很多. 解决方法
请注意,有一种更好的方法可以在没有词典理解的情况下做到这一点;见下文.我将首先解决您的方法的问题.
您需要在理解中使用嵌套顺序.按嵌套常规循环时的顺序列出循环. line.split()表达式返回两个项目的序列,但这些项目中的每一个都不是键和值的元组;相反,只有一个元素被迭代.将分组包装在一个元组中,这样就可以得到一个(序列)的(键,值)项目,将两个结果分配给两个项目: dict2 = {key:value for line in ["1:One",value in (line.split(":"),)} 这相当于: dict2 = {} for line in ["1:One","4:Four"]: for key,): dict2[key] = value 只需要嵌套循环,因为你不能这样做: dict2 = {} for line in ["1:One","4:Four"]: key,value = line.split(":") dict2[key] = value 但是,在这种情况下,您应该使用dict()构造函数,而不是字典理解.它需要两个元素的序列,简化了整个操作: dict2 = dict(line.split(":") for line in ["1:One","4:Four"]) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |