簡體   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