Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-比较2种不同的输出格式-逻辑_Python_Json_List_Dictionary_Diff - Fatal编程技术网

Python-比较2种不同的输出格式-逻辑

Python-比较2种不同的输出格式-逻辑,python,json,list,dictionary,diff,Python,Json,List,Dictionary,Diff,我有一个编程案例,这让我很困惑。我并不一定要寻找代码——我在寻找逻辑建议,对此我不知所措 我试过几种不同的方法,但似乎都没有具体的方法 这是一个回归测试。我有两个文件,它们的数据相同,格式非常不同。我需要比较数据并使过程自动化。我将在稍后阶段担心“差异”。如果我能从两个文件中得到可以比较的数据,应该不会太难 文件1基本上包含JSON数据。文件中还有其他可以删除的垃圾。这就是数据的样子: { "Chan-1" : [ { "key1" : "val1", "key2" : val2, "key3"

我有一个编程案例,这让我很困惑。我并不一定要寻找代码——我在寻找逻辑建议,对此我不知所措

我试过几种不同的方法,但似乎都没有具体的方法

这是一个回归测试。我有两个文件,它们的数据相同,格式非常不同。我需要比较数据并使过程自动化。我将在稍后阶段担心“差异”。如果我能从两个文件中得到可以比较的数据,应该不会太难

文件1基本上包含JSON数据。文件中还有其他可以删除的垃圾。这就是数据的样子:

{
"Chan-1" : [ {
"key1" : "val1",
"key2" : val2,
"key3" : val3,
}, {
"key1" : "val1",
"key2" : val2,
"key3" : val3,
} ]
}
文件2基本上就是我可以理解为一个包含项目的python列表。每个项目都有数据,数据格式为
key=value
格式,用逗号分隔,放在括号内

[
spacecraft.telemetry.channel(key1=val1,key2="val2",key3=val3),
spacecraft.telemetry.channel(key1=val1,key2="val2",key3=val3)
]
一个文件中的每个块都与另一个文件中的块相对应,而且本质上是不同的。换句话说:

{
"key1" : "val1",
"key2" : val2,
"key3" : val3,
}
从文件1将(或应该)具有与文件2相同的键值对:

(key1=val1,key2="val2",key3=val3)
顺序也差不多

这两个文件都包含过多的“Chan-1”对象的键值对,为了举例说明,我截断了数据量。每个块中大约有16个键值对,大约有400个块

我试着处理文件2,使其看起来像JSON数据。 我试着处理文件1,使它看起来更像文件2。 我还尝试将这两个文件解析为第三种格式。 但我对这两个概念都没有深入了解——有些东西告诉我,我遗漏了一些东西,考虑到我们已经有一个JSON文件,这不应该这么难

如果有人能给我一些关于这里的逻辑的建议,我将不胜感激——什么似乎是最好的路线,以及应该用什么样的逻辑来实现这一点

谢谢。

对于每个文件:

  • 提取对象的“列表”
  • 将列表中的每个对象转换为字典
    • 对于文件1,此步骤基本上是“将JSON转换为dict”
    • 对于文件2,这将涉及仅提取
      key=value
      字符串,在
      =
      上拆分,并通过字典理解将结果转换为dict

此时,您有两个字典列表。您的问题似乎表明您可以假设列表以相同的方式排序,因此现在您可以检查一个列表中的每个dict是否与另一个列表中相同位置的dict匹配。查看
zip(列表1、列表2)
;这应该会使这一步更容易。

我将解析这两个键-值对,并将它们添加到某种数据库中进行检查(或者只输出为
key:value
,对它们进行排序,并对结果使用
diff(1)
),这似乎是一种合乎逻辑的方法。我知道我将JSON转换成了dict,但我想我在文件2作为字典列表时遇到了一些问题。不过你给了我一个很好的方向,我要再给你一次机会。谢谢