python - 从嵌套字典列表中提取特定字典到临时列表
问题描述
我一直在努力从字典列表中提取值为“0”的子字典并将它们添加到临时字典中。
我试过这个:
new_users = [{'user1':{'book1':'0', 'book2':'4', 'book3':'1'}},{'user2':{'book1':'5', 'book2':'1', 'book3':'0'}}]
def approachA():
for data in new_users: # new_users is a list of nested dictionaries
if data == '0':
print("found 0")
keys = data.keys()
for key in keys:
if key == '0':
key.pop() # tried to deleted delete the elements at first
由于某种原因它不起作用,我已经尝试了 2 个小时,所以请不要问与问题无关的问题。
这是我正在尝试做的一个简单版本:
[{'user1':{'book1':'0', 'book2':'4', 'book3':'1'}},{'user2':{'book1':'5', 'book2':'1', 'book3':'0'}}] -> [{'user1':{'book1':'0'}}, {'user2':{'book3':'0'}}]
所以基本上值为“0”的键被复制到字典的临时列表中。
解决方案
如果您对递归感兴趣,下面的示例应该可以帮助您:
# d_xy => x = nest level
# y = dictionary item in nest level x
d = {'d_00' : {'d_10' : {'d_20' : 0,
'd_21' : 43,
'd_22' : 12},
'd_11' : 4,
'd_12' : 0,
'd_13' : 1},
'd_01' : 0,
'd_02' : {'d_14' : {'d_23' : 0,
'd_24' : 1,
'd_25' : 0},
'd_15' : 4,
'd_16' : {'d_26' : 0,
'd_27' : {'d_30' : 3,
'd_31' : 0,
'd_32' : {'d_40' : 0},
'd_33' : 0},
'd_28' : 1},
'd_17' : 0}}
important_items = []
def get_0_key_values(dic):
for key in dic:
if type(dic[key]) == dict:
get_0_key_values(dic[key])
else:
if dic[key] == 0:
important_items.append({key : dic[key]})
get_0_key_values(d)
print(important_items)
推荐阅读
- r - 一所学校的平均学生
- ios - 如何在快速解析时在参数中添加post api请求
- ios - SwiftUI:如何更改用户按住导航链接或按钮等内容时发生的颜色变化?
- java - 删除文件名的部分字符
- vim - 将光标放在通过 append / line 附加的行之后
- javascript - RxJS - 点击和计时器之间的竞赛
- java - Choose class to execute by giving classname in variable
- ios - 快速无限向上滚动collectionView
- jpa - 如何自动生成 Panache 实体
- c# - How can I drop a ListViewItem onto a Canvas and render the image, the Item contains?