【发布时间】:2019-03-13 15:43:52
【问题描述】:
我对 python 完全陌生,我陷入了困境。
我有两个具有相同键和不同值的 json 文件,如下所示,所有值都是唯一的,不重复。
srce_d1 = {'key1': 'val1', 'key2': 'val2', 'key3': 'val3', 'key4': 'val4', 'key5': 'val5'}
dest_d2 = {'key1': 'val4', 'key2': 'val7', 'key3': 'val1', 'key4': 'val2', 'key5': 'val8'}
我需要根据基于 source_d1 的键值对重新排序/交换 dest_d2 的值。说明一下,在dest_d2中,对于key1,对应的值为value1。我必须在所有值中搜索 value1 并将其与 key1 的值交换,依此类推,直到我得到公共键值对和其余键值。
我修改后的 dest_d2 在每次迭代中应该如下所示,
dest_d2 = {'key1': 'val4', 'key2': 'val7', 'key3': 'val1', 'key4': 'val2', 'key5': 'val8'}
dest_d2 = {'key1': 'val1', 'key2': 'val7', 'key3': 'val4', 'key4': 'val2', 'key5': 'val8'}
dest_d2 = {'key1': 'val1', 'key2': 'val2', 'key3': 'val4', 'key4': 'val7', 'key5': 'val8'}
而我最终想要的输出 json 应该是,
dest_d2 = {'key1': 'val1', 'key2': 'val2', 'key3': 'val7', 'key4': 'val4', 'key5': 'val8'}
最后,我将在两个 json 文件中都有共同的键值对(key1,key2,key4),其他键值对的顺序无关紧要,但我仍然需要它们。
下面是我的代码,但它根本不起作用。
def verify_values(des_json_obj, src_json_file):
file_val = open(src_json_file)
src_json_val = json.load(file_val)
output_json = {}
for _,value1 in des_json_obj.items():
for key,value in src_json_val.items():
if value == value1:
output_json[key] = value
return output_json
【问题讨论】:
-
我不完全明白你想要发生什么。我对您的问题中的
iterations有点困惑-您认为代码会产生的那些过渡阶段在制定最终解决方案时?期望的最终输出会是什么样子 - 确切地说?请编辑您的问题(编辑问题下方的链接)以添加这些详细信息。 -
@gibberish,是的,你是对的,我希望迭代成为发生交换的循环的一部分,并且我得到最终所需的输出。
标签: python-3.x