我需要比较两个字典的键,如果键匹配,则将这些键的值复制到文件中。
这里的要求是我有两个文件,并且我想读取不是以#
开头的所有键,并将其存储在两个字典中。然后比较两个字典键。
让我说我在dict1
中有第一个文件密钥,在dict2
中有第二个文件密钥,并且如果dict1
,我想将dict2
密钥与dict1
密钥进行比较键与dict2
键匹配,然后将匹配键的值从dict1
复制到dict2
。键值的顺序不应在文件中更改。
下面是我遵循的方法,但不符合我的要求。
with open(file1) as bl_file:
content_bld_file = bl_file.readlines()
for i in content_bl_file:
if '#' not in i:
bl_d = {}
bl_var1 = (i.split("="))
if len(bl_var1)>1:
bl_d[bl_var1[0]]=bl_var1[1]
if len(bl_d) == 1:
for k, v in bld_d.items():
bl_file_keys = k
print(bl_file_keys)
with open(file2) as tr_file:
content_tr_file = tr_file.readlines()
for i in content_tr_file:
if '#' not in i:
tr_d = {}
tr_var2 = (i.split("="))
if len(tr_var2)>1:
tr_d[tr_var2[0]]=tr_var2[1]
if len(tr_d) == 1:
for k,v in tr_d.items():
tr_file_keys = k
print(tr_file_keys)
因此从上面我可以在两个字典中读取和存储密钥,但无法进行比较。任何帮助将不胜感激
答案 0 :(得分:0)
您需要找到键的交点。试试这个:
a = {1: 2, 3: 4, 5: 6}
b = {1: 5, 2: 6, 3: 7}
a_keys = set(a.keys())
b_keys = set(b.keys())
print(a_keys.intersection(b_keys)) // Prints {1, 3}
要查找一组中的键而不是另一组中的键,只需将它们相减即可:
new_keys = a_keys - b_keys
答案 1 :(得分:0)
您可以使用两个字典的键的交点的dict2
的值来更新dict1
:
d1 = {1: 2, 3: 4}
d2 = {3: 5, 4: 3}
d2.update({k: d1[k] for k in d1.keys() & d2.keys()})
d2
将变为:
{3: 4, 4: 3}