繁体   English   中英

如何以简单的方式更改python中dict列表中项的值?

[英]How to change value for item in a list of dict in python in a simple way?

假设一个由python中的几个dict组成的列表:

a = [{1: u'100'}, {2: u'200'}, {3: u'300'}]

我想将dict项的数据类型从unicode更改为float,即

a = [{1: 100.0}, {2: 200.0}, {3: 300.0}]

以下是我目前的代码:

for i in a:
   for j in i.keys():
       if type(i[j]) == unicode:
           i[j] = float(i[j])

它有效,但我讨厌这个愚蠢的表达。 必须有一些更优雅的表达方式。 请帮忙。

>>> a = [{1: u'100'}, {2: u'200'}, {3: u'300'}]
>>> [{k:float(v) for k,v in d.iteritems()} for d in a]
[{1: 100.0}, {2: 200.0}, {3: 300.0}]

如果你需要添加一个Unicode类型检查,你可以,但可以说,嵌套列表/字典理解不再是所有可读的:

>>> a = [{1: u'100'}, {2: u'200'}, {3: u'300', 4: "not unicode"}]
>>> [{k:float(v) if isinstance(v, unicode) else v for k,v in d.iteritems()} for d in a]
[{1: 100.0}, {2: 200.0}, {3: 300.0, 4: 'not unicode'}]

暂无
暂无

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

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