如何从另一个字典创建字典?

时间:2012-08-24 21:46:23

标签: python dictionary

在Python中使用其他dict创建具有某些属性的dict的最佳方法是什么?

例如,假设我有以下dict

dict1 = {
    name:          'Jaime',
    last_name:     'Rivera',
    phone_number:  '111111',
    email:         'test@gmail.com',
    password :     'xxxxxxx',
    token:         'xxxxxxx',
    secret_stuff:  'yyyyyyy'   
}

我想获得

dict2 = {
    name:          'Jaime',
    last_name:     'Rivera',
    phone_number:  '111111',
    email:         'test@gmail.com'
}

6 个答案:

答案 0 :(得分:35)

例如:

keys = ['name', 'last_name', 'phone_number', 'email']
dict2 = {x:dict1[x] for x in keys}

答案 1 :(得分:18)

使用dict理解:

required_fields = ['name', 'last_name', 'phone_number', 'email']
dict2 = {key:value for key, value in dict1.items() if key in required_fields}

答案 2 :(得分:5)

for key in d1:
    if key in wanted_keys:
        d2[key] = d1[key]

<强>更新

我最近发现用dict理解

可以更清晰地做到这一点

wanted_keys = set(['this_key', 'that_key'])
new_dict = {k: d1[k] for k in d1.keys() & wanted_keys}

答案 3 :(得分:3)

不知道怎么没人回答这个问题。

你可以使用双星号来解构一个字典,巧合的是,这也适用于另一个字典。

someweirddata = {"hello":"world"}
print({"initial data":"yati yati yata",**someweirddata})

输出:

{'initial data': 'yati yati yata', 'hello': 'world'}

这与 Javascript 的 ... 相同,只是它是 **

答案 4 :(得分:2)

def removekey(mydict, key):
    r = dict(mydict)
    del r[key]
    return r

传递mydict字典和要删除的密钥,返回剩余的字典

答案 5 :(得分:1)

对于想要dict1的完整副本但不列出密钥的任何人:

dict2 = {k: v for k, v in dict1.items()}