如何在Python的嵌套字典中用相应的布尔值替换字符串值?



最近我在大学的Python课程中接到了一个项目。基本上,使用csv将字典保存在csv文件中。然后用csv。dictreader将它加载回另一个字典。然而,由于某种原因,其中一个自动化单元测试使我的函数失败了,因为最终的字典包含值&;true &;或";False"而不是Bool值True或False(我只是认为这是合乎逻辑的,因为我们从文件中读取字符串并将其放入字典中)。

无论如何,我一直在玩弄在我的函数返回字典之前实际替换这些的想法,但即使是在语法方面工作的代码版本在逻辑上也没有功能,并且True和False值仍然是字符串。下面是我尝试的一个例子:

a = {
"b": {
"name": "gari",
"last_name": "jovan",
"truth": "True"
},
"c": {
"name": "miki",
"last_name": "milane",
"truth": "False"
},
"d": {
"name": "baki",
"last_name": "mico",
"truth": "True"
}
}
for i in a: #we approach individual small dicts
for j in i: #we approach keys in said dicts
if j == "truth":
if j["truth"] == "False":
j["truth"] == False
elif j["truth"] == "True":
j["truth"] == True
else:
raise Exception("Greska")
else:
pass
else:
pass
print(a)

正如我所说,这只是一个包含的示例,而不是来自我的实际项目,因为我试图通过一段孤立的代码来确定实际的解决方案。然而,这似乎不工作,我只是想知道是否有人能帮助我。

提前感谢!

尝试:

a = {
"b": {"name": "gari", "last_name": "jovan", "truth": "True"},
"c": {"name": "miki", "last_name": "milane", "truth": "False"},
"d": {"name": "baki", "last_name": "mico", "truth": "True"},
}

for d in a.values():
d["truth"] = d["truth"] == "True"
print(a)

打印:

{
"b": {"name": "gari", "last_name": "jovan", "truth": True},
"c": {"name": "miki", "last_name": "milane", "truth": False},
"d": {"name": "baki", "last_name": "mico", "truth": True},
}

最新更新