gpt4 book ai didi

python - 有条件地改变Python中内部字典的值

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:28 26 4
gpt4 key购买 nike

我在 dict 中有字典,需要将内部字典的值从 None 更改为“None”,以便它可以显示在 csv 文件中,而不是空白单元格。示例:

{Object1 : {cellload : 1, cellthr : None, cellcap : 40}
Object2 : {cellload : None, cellthr : 2, cellcap : 40}
...
ObjectN : {cellload : None, cellthr : 5, cellcap : 50}}

所以,我不需要 None 或 NaN 值,这些值在 csv 文件中无法识别,我需要“None”作为字符串。

我已经尝试过这个:

def replace(main_dif):
for k, v in main_dif.items():
for ki, ve in v.items():
if ve is None:
ve = "None"
elif type(ve) == type(main_dif):
replace(ve)
replace(main_dif)

还有这个:

outer = {}
for k, v in main_dif.items():
inner = {}
for ki, ve in v.items():
if ve is None:
ve == 'None'
else:
ve = ve
inner.update({ki:ve})
outer.update({k:inner})

和往常一样,没有人在那里,就像我什么也没做一样。

最佳答案

一种选择是暴力破解所有对象的所有值并替换 None。

for obj in objects:
for k,v in obj.items():
if v is None:
obj[k] = 'None'

编辑最好尽可能使用 python csv 模块。

在这种情况下,我们可以制作一个自定义 DictWriter 来为我们处理 None 情况(可能需要根据数据进行调整)。

import csv

class NoneSafeWriter(csv.DictWriter):

def _extract_val(self, rowdict, key):
v = rowdict.get(key)
return 'None' if v == None else v

def _dict_to_list(self, rowdict):
return [self._extract_val(rowdict, key) for key in self.fieldnames]

with open('output.csv', 'w') as csvfile:
fieldnames = ['cellload', 'cellthr', 'cellcap']
writer = NoneSafeWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(objects.values())

关于python - 有条件地改变Python中内部字典的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43771147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com