【发布时间】:2020-09-19 10:14:05
【问题描述】:
我有以下结构的嵌套字典。像键 values 一样,可能有多个键,例如 values1、values2。我正在寻找 random1 和 random2 字符串。如果存在,则必须检查val是否存在。
d = {"values": [
{
"name": "A1234",
"description": "A1234-Description ",
"random1": {
"abcd": {
"val": 1
}
},
"random2": {
"abcd": {
"val": -1
}
}
},
{
"name": "A4567",
"description": "A4567-Description ",
"random1": {
"abcd": {
"val": 1
}
},
"random2": {
"abcd": {
"val": -1
}
}
},
{
"name": "B1234",
"description": "B1234-Description ",
}
]}
代码:
for i in d["values"]:
for k, v in i.items():
if k in ("random1", "random2") and "abcd" in v1:
if len(v1["abcd"]) != 0:
if "val" in v1["abcd"]:
print("Found")
else:
print("Not found")
else:
print("empty")
我相信循环到字典没有捷径。但绝对应该有一些技术/优化来做到这一点(减少多个 for/if 循环)
任何人都可以请指导我,如果它可以通过使用集合等来完成
【问题讨论】:
-
你想要的输出是什么?
Found, Not Found, empty对应每个randonm[12] -> abcd? -
@schwobaseggl : 对于每个 random1 或 random2,找到或未找到 'val'。