用python替换字典中的None值(1键,3值)

2024-10-02 00:25:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python替换字典中的“None”或“”(空字符串)为“NoString”,我想了很多时间,但我无法完成它

这是字典:

{
'Column0':['ID','Company','Name'],
'Column1':[293193,'Exist','Robort Car'],
'Column2':[None,None,""],
'Column3':[None,"Close",None],
'Column4':["",None,None]
}

也许我会使用,如果,请帮助我


Tags: 字符串namenoneid字典时间carcompany
2条回答

您应该迭代dict值,以便替换它们:

myDict = {
'Column0':['ID','Company','Name'],
'Column1':[293193,'Exist','Robort Car'],
'Column2':[None,None,""],
'Column3':[None,"Close",None],
'Column4':["",None,None]
}

newDict = dict()
for key, value in myDict.items():
    newDict[key] = ["NoString" if s in [None, ""] else s for s in value ]

print(str(newDict).replace("],", "],\n"))

输出:

{'Column0': ['ID', 'Company', 'Name'],
 'Column1': [293193, 'Exist', 'Robort Car'],
 'Column2': ['NoString', 'NoString', 'NoString'],
 'Column3': ['NoString', 'Close', 'NoString'],
 'Column4': ['NoString', 'NoString', 'NoString']}

我认为这里的关键是理解如何修改列表的值。列表上的简单for循环不会修改/更新列表的值。为此,必须使用Enumerate并通过索引访问元素,才能成功修改值。出于我的实践,我还建议使用isinstance,因为假设一个值不是列表,那么我不希望我的代码被破坏,并且通过使用isinstance(…,list)来保证代码的安全并不是那么困难

下面是一个更基本、更容易理解的解决方案

d = {
'Column0':['ID','Company','Name'],
'Column1':[293193,'Exist','Robort Car'],
'Column2':[None,None,""],
'Column3':[None,"Close",None],
'Column4':["",None,None]
}

print(d)

for k in d.keys():
    l = d[k]
    if isinstance(l,list):
        for idx, i in enumerate(l):
            if l[idx] is None:
                l[idx] = "NoString"

print(d)

以及输出:

enter image description here

相关问题 更多 >

    热门问题