词典中的理解

时间:2016-12-01 11:40:32

标签: python-3.x

我刚开始学习理解,这让我有点困惑:

list1=[2,5,7,8]
list2=[1,3,5,7]
list3=[3,5,7,13,17]

list={key:number for number in list1 if number %2==1 key="odd numbers"}

这会产生语法错误。

list={"odd numbers:":number for number in list1 if number %2==1}

这会产生一对包含list1中最后一个catchen数字项的对7,它是7.(不应该是这样的:奇数:5,奇数:7?)

4 个答案:

答案 0 :(得分:0)

在第一种情况下,你有一个'=',这应该是两个。在第二种情况下,您将覆盖第一个赋值,因为它具有相同的键。一个键只能有一个赋值,你可以为它指定一个列表来代替所有赋值。

答案 1 :(得分:0)

Python dict中的每个键必须是唯一的:

>>> list={("odd numbers:",number) for number in list3 if number %2==1}
>>> list
{('odd numbers:', 3), ('odd numbers:', 17), ('odd numbers:', 13), ('odd numbers:', 7), ('odd numbers:', 5)}

在您的示例中,您使用dict中的相同键覆盖每个时间值,例如:

>>> odd_dict = {'odd numbers': 1}
>>> odd_dict
{'odd numbers': 1}
>>> odd_dict['odd numbers'] = 2
>>> odd_dict
{'odd numbers': 2}

答案 2 :(得分:0)

Dict键必须是唯一的。您正在寻找 dict literal ,其值为 list comprehension ,而不是 dict comprehension

Dict理解:

d1 = {"odd numbers": number for number in list1 if number %2==1}

将字典理解作为值的字面值:

d2 = {"odd numbers": [number for number in list1 if number %2==1]}

使用dict理解时,使用新值一遍又一遍地覆盖相同的键。将dict literal与list comprehension一起用作值时,会将 list 分配给提到的键。

答案 3 :(得分:0)

  

list={"odd numbers:":number for number in list1 if number %2==1}而且   这会产生一对包含最后一个catchen数字的项目   list1是7.(不应该是这样的:奇数:5,奇数   数字:7?)

在理解dict时要记住,dicts只允许使用唯一键,因此在适当地迭代{'odd numbers': 7}(获取最后一个奇数)后,您将获得list1。要获得字典理解中输入列表中所有奇数的列表,请使用以下方法:

list3=[3,5,7,13,17]
list = {"odd numbers":[number for number in list3 if number%2 == 1]}

print(list)

输出:

{'odd numbers': [3, 5, 7, 13, 17]}