我有一个大的字典对象,有几个键值对(大约16),但我只对它们中的3个感兴趣.实现这一目标的最佳方式(最短/最有效/最优雅)是什么?
我所知道的最好的是:
bigdict = {'a':1,'b':2,....,'z':26}
subdict = {'l':bigdict['l'], 'm':bigdict['m'], 'n':bigdict['n']}
Run Code Online (Sandbox Code Playgroud)
我相信有比这更优雅的方式.想法?
我想从中得到:
keys = [1,2,3]
Run Code Online (Sandbox Code Playgroud)
对此:
{1: None, 2: None, 3: None}
Run Code Online (Sandbox Code Playgroud)
这是一种pythonic方式吗?
这是一种丑陋的方式:
>>> keys = [1,2,3]
>>> dict([(1,2)])
{1: 2}
>>> dict(zip(keys, [None]*len(keys)))
{1: None, 2: None, 3: None}
Run Code Online (Sandbox Code Playgroud) 在Python dict中用另一些属性创建一个属性的最佳方法是什么dict?
例如,假设我有以下内容dict:
dict1 = {
name: 'Jaime',
last_name: 'Rivera',
phone_number: '111111',
email: 'test@gmail.com',
password : 'xxxxxxx',
token: 'xxxxxxx',
secret_stuff: 'yyyyyyy'
}
Run Code Online (Sandbox Code Playgroud)
我想获得
dict2 = {
name: 'Jaime',
last_name: 'Rivera',
phone_number: '111111',
email: 'test@gmail.com'
}
Run Code Online (Sandbox Code Playgroud) 由于这里关于这个主题的许多问题证明了这一点,所以拿一本字典是一个非常常见的任务,有一个相当不错的解决方案:
{k:v for k,v in dict.viewitems() if some_test(k,v)}
Run Code Online (Sandbox Code Playgroud)
但是这会创建一个新的字典,并带有自己的映射.对于许多操作,只有原始字典的不可变视图(即它不支持视图上的赋值或删除操作)会很好.实现这样的类型可能很容易,但是增加本地实用程序类并不好.
所以,我的问题是:是否有内置的方式来获得这样的"子集视图"?或者是否有第三方库(最好通过PyPi提供)提供这种实用程序的良好实现?