我想创建一个字典(或列表),它是另一个字典的子集。请看下面的代码:
ThePythons = {
'GC': 'Graham Chapman',
'JC': 'John Cleese',
'EI': 'Eric Idle',
'MP': 'Michael Palin'
}
query = ['EI', 'JC']
output = {key: value for key, value in ThePythons.items() if key in query}
print(output)
有时输出是:
{'JC': 'John Cleese', 'EI': 'Eric Idle'}
有时是:
{'EI': 'Eric Idle', 'JC': 'John Cleese'}
如何以与查询完全相同的顺序保存(保存)输出?我希望输出始终为:
{'EI': 'Eric Idle', 'JC': 'John Cleese'}
输出也可以是列表类型(<class 'list'>
)。例如:
[['EI', 'Eric Idle'], ['JC', 'John Cleese']]
答案 0 :(得分:2)
字典无序。您必须使用列表推导而不是字典理解来保持顺序:
output = [(key, ThePythons[key]) for key in query]
答案 1 :(得分:1)
您可以使用列表理解迭代列表并从字典中获取项目:
output = [[item,ThePythons[item]] for item in query if item in ThePythons]
print output
输出:
[['EI', 'Eric Idle'], ['JC', 'John Cleese']]
使用地图:
map(lambda x: [x,ThePythons[x]] if x in ThePythons else [x,"Not found"], query)