У меня есть следующие данные:
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» и сравню его с «takeid», затем добавлю новый «takeid» на основе пропущенных значений.После этого я хочу создать словарь, который имеет форму этого {id: {takeid: lib}}, но исключая пустой список (недавно добавленные «takeid» и «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'}}]