3

私は非常に頻繁に次のようなことをする必要があります:

"Some dictionary with values obtained somehow (e.g. submitted form values)"
my_dict = {
    'name': 'John',
    'surname': 'Doe',
    'age': 27,
    'hair_color': 'green',
}

"object person is some instance of class representing person"
person.name = my_dict['name']
person.surname = my_dict['surname']
person.age = my_dict['age']
person.hair_color = my_dict['hair_color']

これの繰り返しだと思います。どのようなアプローチを使用しますか?

4

3 に答える 3

8
for attr, val in my_dict.items():
    setattr(person, attr, val)

my_dictにコピーしたくないキーが含まれている可能性がある場合は、コピーpersonしたいキーのリストを作成し、次のようにします。

key_list = ['name', 'surname', 'age', 'hair_color']
for attr in key_list:
    setattr(person, attr, my_dict[attr])
于 2012-09-24T16:23:33.420 に答える
1

インスタンスの属性には辞書を介してアクセスできるため、次を使用しますinstance.__dict__

>>> for item in my_dict:
        person.__dict__[item]=my_dict[item]
于 2012-09-24T16:24:27.530 に答える
0

これにはすでにかなり良いQ/Aがあります:Pythonでその場でオブジェクトを作成する方法は?

あなたの場合:

person = type('Person', (object,), my_dict)
print person.name
于 2012-09-24T16:29:59.477 に答える