Вы можете сделать что-то вроде этого:
First_Dict = {"Texas": ["San Antonio", "Austin", "Houston", "Dallas"],
"California": ["San Diego", "Los Angeles", "San Francisco"],
"Florida": ["Miami", "Orlando", "Jacksonville", "Naples"],
"Arizona": ["Phoenix", "Tucson"]}
Second_Dict = {"Texas": ["San Antonio", "Austin", "Houston"],
"California": ["San Diego", "Los Angeles", "San Francisco"],
"Florida": ["Miami", "Orlando", "Jacksonville"], "Illinois":
["Chicago", "Naperville"]}
for key, values in First_Dict.items():
if key in Second_Dict: # if key match
diff = [value for value in values if value not in Second_Dict[key]]
if not diff: # all values match
pass
else:
print("key: {}, missing values: {}".format(key, diff))
else:
print("key: {}, missing values: {}".format(key, values))
выход
key: Florida, missing values: ['Naples']
key: Texas, missing values: ['Dallas']
key: Arizona, missing values: ['Phoenix', 'Tucson']
Строка diff = [value for value in values if value not in Second_Dict[key]]
представляет собой список и вычисляет разницу между значениями в First_Dict
и Second_Dict
, когда ключи совпадают.
UPDATE
Если вам нужны оба различия, вы можете сделать что-то вроде этого:
First_Dict = {"Texas": ["San Antonio", "Austin", "Houston", "Dallas"],
"California": ["San Diego", "Los Angeles", "San Francisco"],
"Florida": ["Miami", "Orlando", "Jacksonville", "Naples"],
"Arizona": ["Phoenix", "Tucson"]}
Second_Dict = {"Texas": ["San Antonio", "Austin", "Houston"],
"California": ["San Diego", "Los Angeles", "San Francisco"],
"Florida": ["Miami", "Orlando", "Jacksonville"], "Illinois":
["Chicago", "Naperville"]}
for key, values in First_Dict.items():
if key in Second_Dict: # if key match
diff_first = [value for value in values if value not in Second_Dict[key]]
diff_second = [value for value in Second_Dict[key] if value not in values]
if not diff_first: # all values match
pass
else:
print("key: {}, missing values: {} in Second_Dict".format(key, diff_first))
if not diff_second:
pass
else:
print("key: {}, missing values: {} in First_Dict".format(key, diff_second))
else:
print("key: {}, missing values: {} in Second_Dict".format(key, values))
for key, values in Second_Dict.items():
if key not in First_Dict:
print("key: {}, missing values: {} in First_Dict".format(key, values))
выход
key: Texas, missing values: ['Dallas'] in Second_Dict
key: Florida, missing values: ['Naples'] in Second_Dict
key: Arizona, missing values: ['Phoenix', 'Tucson'] in Second_Dict
key: Illinois, missing values: ['Chicago', 'Naperville'] in First_Dict
Второй цикл предназначен для перебора ключей в Second_Dict
, отсутствующих в First_Dict
.