从python读取json文件

从python读取json文件,python,dictionary,Python,Dictionary,我需要为每个用户阅读ep_0和ep_1,以下是我的剪贴代码: 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

我需要为每个用户阅读ep_0和ep_1,以下是我的剪贴代码:

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]"}}
      }
我的代码的输出是{},期望输出应该是:

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]'}} }
users
是dict中格式不正确的键列表。您希望
js[users]
是什么意思

然而,您的第一个问题是组合

users = [i for i in js.keys()]
...
        for z in js[users]['f_']:
用户
是姓名列表:亚历克斯、萨姆、乔。您希望如何在该列表中找到
f
?您错误地连接了变量


我强烈建议您重新开始编码。采用增量编程。写几行代码,完成流程的一个步骤。插入
print
语句以测试它们是否符合您的期望。只有在你证明了这一点之后,你才能添加更多的行

您在这里面临的问题是,您一次编写了太多的代码,犯了几个错误,而您现在的处境是,单个修复无法获得任何合理的输出


在那里,我做了这些,我有太多的t恤衫是我自己创作的。

我在代码中的一些地方看到了
js[users]
。您可能是指
js[user]
,因为
users
只是
js
中的键列表,而不是键本身。尝试修复它,看看它是否对您有帮助。

以下是我解决您问题的简单方法

for key in users:
    for user in js[key].keys():
        if 'f_' not in key:
输出

final_data = {}
for user in js.keys():
    if 'f_' not in js[user]:
        continue
    final_data[user] = { "f_": js[user]['f_']}

print(final_data)

到目前为止,您尝试了什么?您能显示预期的输出吗?在不同的位置使用
print()
来查看变量中的值-这有助于您了解问题所在。学习使用
.items()
。这里显示的不是JSON。您的
js=…
正在分配Python数据结构;要成为JSON,它需要有双引号——除非您指的是内部字符串中的列表是JSON?谢谢您提到它(这在我的代码中是正确的,我也编辑了我的问题)。如果我删除ep_1的条件,我可以得到ep_0。
{'Alex': {'f_': {'ep_0': '[3,4,5]', 'ep_1': '[3,4,5]'}}, 'Joe': {'f_': {'ep_1': '[31,44,56]'}}}