我在dict中有这个词,需要改变内部词组的值是“无”到“无”。所以它可以在csv文件中显示,而不是一个空白单元格。 例如:
{Object1 : {cellload : 1, cellthr : None, cellcap : 40}
Object2 : {cellload : None, cellthr : 2, cellcap : 40}
...
ObjectN : {cellload : None, cellthr : 5, cellcap : 50}}
所以,我不需要在csv文件中识别的无或NaN值,我需要'无'作为一个字符串。
我试过这个:
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})
并且没有像往常一样,就像我什么也没做。
答案 0 :(得分:1)
一种选择就是强行通过所有对象的所有值并替换Nones。
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())