我有以下数据:
d = d = [ {
"test" : [ {
"win" : {
"number" : 0
},
"taken" : [ {
"id" : "0",
"library" : [ ]
} ]
}, {
"win" : {
"number" : 1
},
"taken" : [ {
"id" : "1",
"library" : [ {
"takenid" : "2",
"lib" : "man"
} ]
}, {
"id" : "2",
} ]
}, {
"chunk" : {
"number" : 2
},
"taken" : [ {
"id" : "3",
"library" : [ {
"takenid" : "0",
"lib" : "woman"
}, {
"takenid" : "1",
"lib" : "ghost"
}, {
"takenid" : "4",
"lib" : "monster"
} ]
}, {
"id" : "4"
} ]
} ]
} ]
我想打印“lib”字典的所有值,但不是空列表。在我的代码中,我将检查总的“id”,并将其与“takenid”进行比较,然后根据缺少的值添加新的“takenid”。之后,我希望创建一个{id:{塔克奈德:lib}}但不包括空列表(新添加的“takenid”和“lib”)。你知道吗
下面是我的脚本代码:
acom = []
lemmas = []
ordering = []
sort = []
check = 0
for x in d[0]["test"]:
for y in x["taken"]:
if "id" in y:
check += 1
value = []
#Calculate the number of "takenid"
for x in d[0]["test"]:
for y in x["taken"]:
if "library" in y:
for u in y["library"]:
value.append(int(u["takenid"]))
#Find the difference between the "id" and "takenid"
missing = (set(range(check)) - set(value))
missing = list(missing)
#print(missing)
for x in d[0]["test"]:
for y in x["taken"]:
if "library" in y:
y["library"].append({"takenid": "%s" % missing[0], "lib": []})
break
#Create a dictionary
for x in d[0]["test"]:
for y in x["taken"]:
if "library" in y:
for u in y["library"]:
if "[]" not in u["lib"]:
#if "[]" not in uu:
ordering.append({y["id"]:{u["takenid"]:u["lib"]}})
#print(ordering)
但是,我的代码接收空列表并打印此输出:
电流输出:
[{'0': {'3': []}}, {'1': {'2': 'man'}}, {'3': {'0': 'woman'}}, {'3': {'1': 'ghost'}}, {'3': {'4': 'monster'}}]
我希望创建一个没有空列表的词典。有可能吗?你知道吗
预期产量:
[ {'1': {'2': 'man'}}, {'3': {'0': 'woman'}}, {'3': {'1': 'ghost'}}, {'3': {'4': 'monster'}}]
可能是
"[]"
引起了这个问题。将"[]"
更改为[]
把
if "[]" not in u["lib"]:
改成if u["lib"]:
就行了。你知道吗说明:
"[]" not in u["lib"]
表示'find substring "[]" in u["lib"]'
。但在u["lib"]
中,只包含字符串或空列表。所以只要评估值存在就会给出正确答案。你知道吗较短的备选方案:
这里,
if 'library' in baz and baz['library']
将检查library
键是否存在并且不为空。你知道吗相关问题 更多 >
编程相关推荐