![](/img/trans.png)
[英]Converting keys from float to int in dict in dict in list in dict
[英]Converting float to int in a dict in dict in list in dict
我有一個字典數據如下。 我想將浮點數轉換為整數。 我該怎么做 go 呢? 我嘗試了幾種方法,但無濟於事。
數據:
{'ABC': {'2020-09-01': [{487.0: (0, 1), 488.0: (1, 2)}, {489.0: (0, 1), 481.0: (1, 2)}]},
'CDE': {'2020-01-01': [{484.0: (0, 1), 483.0: (1, 2)}, {482.0: (0, 1), 481.0: (1, 2)}]}}
我要這個:
{'ABC': {'2020-09-01': [{487: (0, 1), 488: (1, 2)}, {489: (0, 1), 481: (1, 2)}]},
'CDE': {'2020-01-01': [{484: (0, 1), 483: (1, 2)}, {482: (0, 1), 481: (1, 2)}]}}
我嘗試了這段代碼,但我收到了這個錯誤“RuntimeError:迭代期間字典鍵發生了變化”:
for i in data:
for date in data[i]:
for model in range(0, len(data[i][date])):
for k, v in data[i][date][model].items():
data[i][date][model][int(k)] = data[i][date][model].pop(k)
我認為您的代碼很接近,但是正如您所說,您在迭代期間修改了字典鍵。 這是構建中間替換值的一種方法。
d = {
"ABC": {
"2020-09-01": [{487.0: (0, 1), 488.0: (1, 2)}, {489.0: (0, 1), 481.0: (1, 2)}]
},
"CDE": {
"2020-01-01": [{484.0: (0, 1), 483.0: (1, 2)}, {482.0: (0, 1), 481.0: (1, 2)}]
},
}
print('d before:', d)
for k1,v1 in d.items():
for k2,v2 in v1.items():
v1[k2] = [{int(k4): v4 for k4,v4 in v3.items()} for v3 in v2]
print('d after:', d)
結果:
d before: {'ABC': {'2020-09-01': [{487.0: (0, 1), 488.0: (1, 2)}, {489.0: (0, 1), 481.0: (1, 2)}]}, 'CDE': {'2020-01-01': [{484.0: (0, 1), 483.0: (1, 2)}, {482.0: (0, 1), 481.0: (1, 2)}]}}
d after: {'ABC': {'2020-09-01': [{487: (0, 1), 488: (1, 2)}, {489: (0, 1), 481: (1, 2)}]}, 'CDE': {'2020-01-01': [{484: (0, 1), 483: (1, 2)}, {482: (0, 1), 481: (1, 2)}]}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.