2024-05-16 09:30:44 发布
网友
我将以下内容编码为打印字典('one' : 1, 'tow' : 2, 'three' : 3)。但是错误会出现。有人能回答为什么会这样吗
('one' : 1, 'tow' : 2, 'three' : 3)
length = [] class_one = [1, 2, 3] class_two = ['one', 'two', 'three'] for x in class_one: if x < 4: length[class_two] = class_one print(length)
以下是代码的更正版本:
length = {} class_one = [1, 2, 3] class_two = ['one', 'two', 'three'] for i, x in enumerate(class_two): length[x] = class_one[i] print(length)
您的版本存在以下问题:
length dict
[]
list
{}
dict
key
或者更简单更优雅:
length = dict(zip(class_two, class_one))
在您的情况下,哪种方法是最好的(忽略条件)
它们都是print:{'one' : 1, 'two' : 2, 'three' : 3}
print
{'one' : 1, 'two' : 2, 'three' : 3}
最后,你可以有听写理解版本,它是这样的:
length = {k: v for k, v in zip(class_two, class_one)}
在其他变化中,我们可以想到。请注意,对于您的案例来说,这是一个过度杀伤力
The conditional
至于条件去if x < 4:不知道为什么你有,因为现在的例子输入提供它没有意义,但如果你确实需要它,它很容易重新实现
if x < 4:
作为这样一个例子,请看以下内容:
length = {k: class_one[i] for i, k in enumerate(class_two) if class_one[i] < 4}
或更短的:
length = {class_two[i]: v for i, v in enumerate(class_one) if v < 4}
或者更喜欢(甚至更短):
length = {k: v for k, v in zip(class_two, class_one) if v < 4}
length = {} class_one = [1, 2, 3] class_two = ['one', 'two', 'three'] for c1, c2 in zip(class_one, class_two): if c1 < 4: length[c2] = c1 print(length)
在这里,这将为您提供所需的输出。基本上,您是在class_one上迭代,然后尝试使用class_two的全部内容作为length的键。在这里,您迭代两个数组并将值用作键
class_one
class_two
length
以下是代码的更正版本:
您的版本存在以下问题:
length dict
(您使用的[]
是list
的;使用{}
。)dict
:使用整个list
作为key
这是错误的,因为list
是不可散列的,也不是您想要做的李>或者更简单更优雅:
在您的情况下,哪种方法是最好的(忽略条件)
它们都是
print
:{'one' : 1, 'two' : 2, 'three' : 3}
最后,你可以有听写理解版本,它是这样的:
在其他变化中,我们可以想到。请注意,对于您的案例来说,这是一个过度杀伤力
至于条件去
if x < 4:
不知道为什么你有,因为现在的例子输入提供它没有意义,但如果你确实需要它,它很容易重新实现作为这样一个例子,请看以下内容:
或更短的:
或者更喜欢(甚至更短):
在这里,这将为您提供所需的输出。基本上,您是在
class_one
上迭代,然后尝试使用class_two
的全部内容作为length
的键。在这里,您迭代两个数组并将值用作键相关问题 更多 >
编程相关推荐