如何在提取字典的子集后保持顺序

2024-06-16 11:54:06 发布

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

我想做一本词典(或列表),它是另一本词典的子集。请看下面我的代码:

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']]

Tags: keyin列表outputvaluequeryjohn子集
2条回答

字典是无序的。你必须使用列表理解而不是字典理解来保持顺序:

output = [(key, ThePythons[key]) for key in query]

您可以使用列表理解迭代列表并从字典中获取项目:

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)

相关问题 更多 >