gpt4 book ai didi

python - 在Python中从众多json中查找公共(public)值对字段

转载 作者:行者123 更新时间:2023-11-30 22:41:31 24 4
gpt4 key购买 nike

我有 JSON 文件列表。现在我打算从所有这些 JSON 中找到所有公共(public)值对并将其复制到不同的 JSON。此外,应从所有 JSON 中删除公共(public)值对。

假设我有 a.jsonb.jsonc.json ... z.json

现在所有这些中的公共(public)标签值对是

"Town" : "New York"

然后,这个公共(public)元素应该移动到一个名为 common.json 的新 JSON 文件,并且该元素应该从所有 JSON 文件中删除。

例如 json 文件如下所示:

{
"RepetitionTime": 2,
"EchoTime": 0,
"MagneticFieldStrength": 3,
"SequenceVariant": "SK",
"MRAcquisitionType": "2D",
"FlipAngle": 90,
"ScanOptions": "FS",
"SliceTiming": [[0.0025000000000000022], [0.5], [-0.030000000000000027], [0.46625], [-0.06374999999999997], [0.43375000000999997], [-0.09624999999999995], [0.40000000001], [-0.12999999999], [0.36750000001], [-0.16249999998999998], [0.333750000005], [-0.19624999999500004], [0.301250000005], [-0.228749999995], [0.26749999999999996], [-0.26249999999500007], [0.235], [-0.29500000000000004], [0.20124999999999998], [-0.32875], [0.16875000001], [-0.36124999999999996], [0.13500000001], [-0.39499999999], [0.10250000000999998], [-0.42749999999], [0.06875000000499998], [-0.46124999999500005], [0.036250000005000005]],
"SequenceName": "epfid2d1_64",
"ManufacturerModelName": "TrioTim",
"TaskName": "dis",
"ScanningSequence": "EP",
"Manufacturer": "SIEMENS"
}

我的想法太复杂了。我想获取第一个 json 文件的每一行并检查所有其他 json。

应该有一些简单而高效的东西。有什么指示吗?

最佳答案

要一次性比较所有文件,您还可以使用 Sets使用 &

一次性比较所有键值
>>> import json

>>> json_dict1 = json.loads('{"a":1, "b":2}')
>>> json_dict2 = json.loads('{"a":1, "b":4, "c":5}')
>>> json_dict3 = json.loads('{"a":1, "b":2, "c":5}')

>>> a = set(json_dict1.items())
>>> b = set(json_dict2.items())
>>> c = set(json_dict3.items())
>>> a & b & c
{('a', 1)}

请注意,您还可以使用Sets执行其他操作,这里是文档中的示例:

>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a # unique letters in a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # letters in a but not in b
{'r', 'd', 'b'}
>>> a | b # letters in either a or b
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # letters in both a and b
{'a', 'c'}
>>> a ^ b # letters in a or b but not both
{'r', 'd', 'b', 'm', 'z', 'l'}

编辑

最后我问了自己的so question基于与您相同的问题(几乎)。

这是最好的response

如果您懒得点击链接,这里有一个概述:

>>> list_dict = [json_dict1, json_dict2, json_dict3]
>>> {k: v
for k, v in list_dict[0].items()
if all(k in d and d[k] == v
for d in list_dict[1:])}
{'a': 1}

关于python - 在Python中从众多json中查找公共(public)值对字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42519928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com