简体   繁体   English

python中的动态类型转换

[英]Dynamic type casting in python

I have 2 dicts: 我有2个词:

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

I want to convert each value in dict2 to be the same type as the corresponding value in dict1 , what's the quickest pythonic way of doing it? 我想将dict2每个值转换为与dict1相应值相同的类型,这是最快的dict1方式吗?

Assuming they're compatible types: 假设它们是兼容的类型:

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

This one liner will do it - but it does not check for type errors: 这个衬里会做 - 但它不会检查类型错误:

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}

This will also do it - and may be more readable for some: 这也可以做到 - 对某些人来说可能更具可读性:

print {k : type(dicts1[k])(v) for (k,v) in dicts2.iteritems()}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM