关于python字典函数

2024-05-16 09:30:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我将以下内容编码为打印字典('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)

Tags: in编码forif字典错误onelength
2条回答

以下是代码的更正版本:

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:使用整个list作为key这是错误的,因为list是不可散列的,也不是您想要做的

或者更简单更优雅:

length = dict(zip(class_two, class_one))

在您的情况下,哪种方法是最好的(忽略条件)

它们都是print{'one' : 1, 'two' : 2, 'three' : 3}


最后,你可以有听写理解版本,它是这样的:

length = {k: v for k, v in zip(class_two, class_one)}

在其他变化中,我们可以想到。请注意,对于您的案例来说,这是一个过度杀伤力


The conditional

至于条件去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的键。在这里,您迭代两个数组并将值用作键

相关问题 更多 >