我刚开始学习理解,这让我有点困惑:
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?)
答案 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]}