18

私は2つの辞書を持っています:

dicts1 = {'field1':'', 'field2':1, 'field3':1.2}
dicts2 = {'field1':123, 'field2':123, 'field3':'123'}

dict2の各値を の対応する値と同じ型に変換したいdict1のですが、それを行う最も簡単な方法は何ですか?

4

3 に答える 3

31

それらが互換性のあるタイプであると仮定します:

for k, v in dicts1.iteritems():
    try:
        dicts2[k] =  type(v)(dicts2[k])
    except (TypeError, ValueError) as e:
        pass # types not compatible
    except KeyError as e:
        pass # No matching key in dict
于 2012-07-12T15:10:06.837 に答える
3

この 1 つのライナーで実行できますが、型エラーはチェックされません。

dicts1 = {'field1':'', 'field2':1, 'field3':1.2}
dicts2 = {'field1':123, 'field2':123, 'field3':'123'}

print {k : type(dicts1[k])(dicts2[k]) for k in dicts2}

これもそれを行います-そして、一部の人にとってはより読みやすいかもしれません:

print {k : type(dicts1[k])(v) for (k,v) in dicts2.iteritems()}
于 2012-07-12T15:12:57.637 に答える