我有一个很大的字典对象,它有几个键值对(大约16个),但我只对其中的3个感兴趣.实现这一目标的最佳方式(最短/最有效/最优雅)是什么?
据我所知:
bigdict = {'a':1,'b':2,....,'z':26}
subdict = {'l':bigdict['l'], 'm':bigdict['m'], 'n':bigdict['n']}
我相信还有比这更优雅的方式.
我有一个很大的字典对象,它有几个键值对(大约16个),但我只对其中的3个感兴趣.实现这一目标的最佳方式(最短/最有效/最优雅)是什么?
据我所知:
bigdict = {'a':1,'b':2,....,'z':26}
subdict = {'l':bigdict['l'], 'm':bigdict['m'], 'n':bigdict['n']}
我相信还有比这更优雅的方式.
你可以试试:
dict((k, bigdict[k]) for k in ('l', 'm', 'n'))
...或在Python 3Python版本2.7或更高版本(thanks to 100 for pointing that out that it works in 2.7 too)中:
{k: bigdict[k] for k in ('l', 'm', 'n')}
Update: As 100 points out, I'm assuming that you know the keys are going to be in the dictionary - see 101 if you aren't able to make that assumption. Alternatively, as 102 points out in the comments, if you want a key that's missing in 103 to map to 104, you can do:
{k: bigdict.get(k, None) for k in ('l', 'm', 'n')}
如果您使用的是Python 3,并且您only希望新字典中的关键点与原始字典中实际存在的关键点相同,则可以使用该事实来查看实现了一些集合操作的对象:
{k: bigdict[k] for k in bigdict.keys() & {'l', 'm', 'n'}}