以下のような異なるキーの2つの辞書を比較するにはどうすればよいですか?
dictionary={"name":"abc","age":23,"male":True}
new_dictionary={"my_name":"abc","my_age":23,"male":1}
例の2つの辞書を比較すると、比較はを返すはずtrue
です。
以下のような異なるキーの2つの辞書を比較するにはどうすればよいですか?
dictionary={"name":"abc","age":23,"male":True}
new_dictionary={"my_name":"abc","my_age":23,"male":1}
例の2つの辞書を比較すると、比較はを返すはずtrue
です。
>>> dictionary={"name":"abc","age":23,"male":True}
>>> new_dictionary={"my_name":"abc","my_age":23,"male":1}
>>> key_map = {"name": "my_name", "age": "my_age"}
>>> all(new_dictionary[key_map.get(k, k)] == v for k, v in dictionary.items())
True
または、キーチェックなしで値が同じであることを確認したいだけの場合:
>>> set(dictionary.values()) == set(new_dictionary.values())
True
編集:タデックがコメントで指摘したように、sorted()
ここではより安全に使用できますset()
。
(はい、これは、一方の辞書が持ってい1
て、もう一方の辞書が持っていても機能しますTrue
)
比較が行われる正確な方法を定義する必要があります。値が割り当てられているキーに関係なく、値を比較するだけの場合は、これを使用できます。
更新された要件に基づくソリューションの 1 つは次のとおりです。
>>> def compare(dict1, dict2):
return sorted(dict1.values()) == sorted(dict2.values())
>>> compare({"name":"abc","age":23,"male":True},
{"my_name":"abc","my_age":23,"male":1})
True
>>> compare({"name":"abc","age":23,"male":True},
{"my_name":"abc","my_age":24,"male":1})
False
dictionary={"name":"abc","age":23,"male":True}
new_dictionary={"my_name":"abc","my_age":23,"male":1}
dict_alias = {"name":"my_name","age":"my_age","male":"male"}
def compare(dictionary,new_dictionary,dict_alias):
same = True
for key in dictionary.keys():
if dictionary[key] == new_dictionary[dict_alias[key]]:
continue
else:
same = False
break
return same