如何在Python中提取一个字典中的键和值

23 浏览
0 Comments

如何在Python中提取一个字典中的键和值

我有一个包含多个键值对(大约16个)的大字典对象,但我只对其中的3个感兴趣。 如何最好(最短/高效/最优雅地)对这样的字典进行子集处理?

我所知道的最好的方法是:

bigdict = {'a':1,'b':2,....,'z':26} 
subdict = {'l':bigdict['l'], 'm':bigdict['m'], 'n':bigdict['n']}

我相信有比这更优雅的方法。

admin 更改状态以发布 2023年5月25日
0
0 Comments

稍微短一点,至少:

wanted_keys = ['l', 'm', 'n'] # The keys you want
dict((k, bigdict[k]) for k in wanted_keys if k in bigdict)

0
0 Comments

你可以试试:

dict((k, bigdict[k]) for k in ('l', 'm', 'n'))

... 或在Python版本2.7或更高版本中(感谢Fábio Diniz指出也适用于2.7):

{k: bigdict[k] for k in ('l', 'm', 'n')}

更新: 如Håvard S指出,我假设你已经知道键将在字典中 - 如果您无法做出这个假设,请查看他的答案. 或者,如评论中timbo指出,如果想要一个丢失在bigdict中的键对应到None,可以这样做:

{k: bigdict.get(k, None) for k in ('l', 'm', 'n')}

如果您正在使用Python 3,并且只想在新字典中使用实际存在于原始字典中的键,则可以利用对象实现一些集合操作的事实:

{k: bigdict[k] for k in bigdict.keys() & {'l', 'm', 'n'}}

0