js = {"Alex":{"b_":{"ep_0":"[1,2,3]"}, "g_":{"ep_0":"[3,4,5]"}, "f_":{"ep_0":"[3,4,5]", "ep_1":"[3,4,5]"}},
"Sam":{"b_":{"ep_0":"[1,2,3]"}, "g_":{"ep_0":"[3,4,5]"}},
"Joe":{"b_":{"ep_0":"[1,2,3]"}, "g_":{"ep_0":"[3,4,5]"}, "f_":{"ep_1":"[31,44,56]"}}
}
我需要为每个用户阅读ep_0和ep_1,这是我的摘录代码:
users = [i for i in js.keys()]
data = {}
final_data = {}
for key in users:
for user in js[key].keys():
if 'f_' not in key:
continue
for z in js[users]['f_']:
if 'ep_0' not in z:
continue
data['ep0'] = js[user]['f_']['ep_0']
if 'ep_1' not in z:
continue
data['ep1'] = js[user]['f_']['ep_1']
final_data[user] = data
print(final_data)
我的代码的输出为{},期望的输出应为:
{'Alex': {'f_':{'ep_0':'[3,4,5]', 'ep_1':'[3,4,5]'}}, 'Joe': { 'f_':{'ep_1':'[31,44,56]'}} }
答案 0 :(得分:1)
这是我为您解决问题的简单方法。
final_data = {}
for user in js.keys():
if 'f_' not in js[user]:
continue
final_data[user] = { "f_": js[user]['f_']}
print(final_data)
输出
{'Alex': {'f_': {'ep_0': '[3,4,5]', 'ep_1': '[3,4,5]'}}, 'Joe': {'f_': {'ep_1': '[31,44,56]'}}}
答案 1 :(得分:0)
我认为您最明显的问题是
users = [i for i in js.keys()]
...
for z in js[users]['f_']:
users
是字典中格式不正确的键列表。您究竟期望js[users]
是什么意思?
但是,您的第一个问题是组合
for key in users:
for user in js[key].keys():
if 'f_' not in key:
users
是姓名列表:Alex,Sam和Joe。您如何期望在该列表中找到f_
?您错误地连接了变量。
我强烈建议您从编码开始。使用增量编程。编写几行代码来完成您的过程中的一个步骤。插入print
语句以测试它们是否符合您的期望。只有在之后证明,您才能添加更多行。
您在这里面临的问题是,您一次编写了太多代码,犯了多个错误,而现在您正处在一个修补程序无法为您提供任何合理输出的情况下。
在那里做完了,从我的尝试到我自己的创作,我都有太多的T恤。
答案 2 :(得分:0)
我在代码中的几个地方看到了js[users]
。您可能是说js[user]
,因为users
只是js
的键列表,而不是键本身。尝试修复该问题,看看是否有帮助。