回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有以下数据:</p>
<pre><code>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"
} ]
} ]
} ]
</code></pre>
<p>我想打印“lib”字典的所有值,但不是空列表。在我的代码中,我将检查总的“id”,并将其与“takenid”进行比较,然后根据缺少的值添加新的“takenid”。之后,我希望创建一个{id:{塔克奈德:lib}}但不包括空列表(新添加的“takenid”和“lib”)。你知道吗</p>
<p>下面是我的脚本代码:</p>
<pre><code>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)
</code></pre>
<p>但是,我的代码接收空列表并打印此输出:</p>
<p>电流输出:</p>
<pre><code>[{'0': {'3': []}}, {'1': {'2': 'man'}}, {'3': {'0': 'woman'}}, {'3': {'1': 'ghost'}}, {'3': {'4': 'monster'}}]
</code></pre>
<p>我希望创建一个没有空列表的词典。有可能吗?你知道吗</p>
<p>预期产量:</p>
<pre><code>[ {'1': {'2': 'man'}}, {'3': {'0': 'woman'}}, {'3': {'1': 'ghost'}}, {'3': {'4': 'monster'}}]
</code></pre>