Python:词典理解有什么问题?

Yug*_*dle 0 python dictionary

我的代码:

dict( (k,v) if k in ['1','2','3','4'] else (k,None)  for k,v in {'1':'one','2':'two'}.items() )
Run Code Online (Sandbox Code Playgroud)

预期产出:

{'1': 'one', '2': 'two', '3':None, '4':None}
Run Code Online (Sandbox Code Playgroud)

实际产量:

{'1': 'one', '2': 'two'}
Run Code Online (Sandbox Code Playgroud)

请帮忙 !

Woo*_*ble 8

for条款只包含2个项目,因此您的最终字典只有2个项目.4项列表仅用作比较,而不是用作值的来源.


eum*_*iro 6

if k in ['1','2','3','4']
Run Code Online (Sandbox Code Playgroud)

是条件,而不是迭代(见if).

你可以把它写成:

dict((k, {'1':'one','2':'two'}.get(k, None)) for k in ['1','2','3','4'])

# returns: {'1': 'one', '2': 'two', '3': None, '4': None}
Run Code Online (Sandbox Code Playgroud)