我在json文件中有一个字典列表。
我遍历了列表和每个字典,以从每个字典中为每个元素获取两个特定的key:value对。
即List[dictionary{i(key_x:value_x, key_y:value_y)}]
我的问题是:
如何将这两个新键:值对放在一个新的列表/字典/数组/元组中,代表两个键:为原始列表中每个列出的元素提取的值对?
要清楚:
ORIGINAL_LIST (i.e. with each element being a nested dictionary) =
[{"a":{"blah":"blah",
"key_1":value_a1,
"key_2":value_a2,
"key_3":value_a3,
"key_4":value_a4,
"key_5":value_a5,},
"b":"something_a"},
{"a":{"blah":"blah",
"key_1":value_b1,
"key_2":value_b2,
"key_3":value_b3,
"key_4":value_b4,
"key_5":value_b5,},
"b":"something_b"}]
到目前为止,我的代码是:
import json
from collections import *
from pprint import pprint
json_file = "/some/path/to/json/file"
with open(json_file) as json_data:
data = json.load(json_data)
json_data.close()
for i in data:
event = dict(i)
event_key_b = event.get('b')
event_key_2 = event.get('key_2')
print(event_key_b)#print value of "b" for each nested dict for 'i'
print(event_key_2)#print value of "key_2" for each nested dict for 'i'
要清楚:
FINAL_LIST(i.e. with each element being a nested dictionary) =
[{"b":"something_a", "key_2":value_2},
{"b":"something_b", "key_2":value_2}]
答案 0 :(得分:0)
因此,我对将键放入单个词典有一个答案,如下代码所示。唯一的问题是,原始json词典中'key_2'的值要么是int值,要么对于值为0的值是“”。我的脚本仅针对key_2的value_2的所有实例返回“ None”。如何获取它读取“ value_2”的适当值?我只想返回'value_2'> 0(即value_2!=“”“)情况下的字典
下面是当前代码:
BEFORE CHANGES:
<html>
<head></head>
<body>
<div>
b a b
<span>b c</span> d b
</div>
</body>
</html>
AFTER CHANGES
<html>
<head></head>
<body>
<div>
<span class="x">b</span> a
<span class="x">b</span>
<span>b c</span> d
<span class="x">b</span>
</div>
</body>
</html>
此外,如果有任何更优雅的解决方案,任何人都可以想到,我真的会对学习它们感兴趣……我正在查看的一些json文件的范围可以从原始列表中的200个字典条目到2,000,000个不等。我打算将解析的结果馈送到消息队列中,以供其他服务处理,代码中的任何效率都将有助于处理的可伸缩性。另外,如果有人对Redis vs. RabbitMQ有任何建议,我将非常感谢