31

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'
}
4

7 に答える 7

72

例えば:

keys = ['name', 'last_name', 'phone_number', 'email']
dict2 = {x:dict1[x] for x in keys}
于 2012-08-24T21:48:59.803 に答える
25

dict理解の使用:

required_fields = ['name', 'last_name', 'phone_number', 'email']
dict2 = {key:value for key, value in dict1.items() if key in required_fields}
于 2012-08-24T21:49:21.490 に答える
9
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}
于 2012-08-24T21:49:13.783 に答える
2
def removekey(mydict, key):
    r = dict(mydict)
    del r[key]
    return r

mydict辞書と削除するキーを渡し、残りの辞書を返します

于 2012-08-24T21:49:19.397 に答える