इस पोस्ट में, हम देखते हैं कि Python में दो डिक्शनरी लिस्ट की तुलना कैसे करें और दोनों लिस्ट के बीच अंतर भी प्रिंट करें।
तुलना मेथड डिक्शनरी में keys और values की तुलना करता है।
साथ ही, Python में दो डिक्शनरी लिस्ट की तुलना करते समय एलिमेंट्स का क्रम मायने नहीं रखता।
Python में डिक्शनरी लिस्ट की तुलना करें
if __name__ == '__main__':
list_1 = [
{'id': '123-abc', 'name': 'Mike', 'age': 40},
{'name': 'John', 'age': 34, 'id': '123-efg'},
{'age': 32, 'id': '123-xyz', 'name': 'Aly'}
]
list_2 = [
{'name': 'Mike', 'id': '123-abc', 'age': 40},
{'id': '123-efg', 'age': 34, 'name': 'John'},
{'id': '123-xyz', 'name': 'Aly', 'age': 32}
]
assert [i for i in list_1 if i not in list_2] == []
उपरोक्त कोड में, list_1 और list_2 समान हैं। यानी प्रत्येक डिक्शनरी में दोनों लिस्ट में समान आइटम्स (keys और values) हैं। प्रत्येक डिक्शनरी में एलिमेंट्स का क्रम अप्रासंगिक है।
डिक्शनरी लिस्ट की तुलना - अंतर प्रिंट करें
हम यह भी प्रिंट कर सकते हैं कि लिस्ट में कौन से डिक्शनरी आइटम्स अलग हैं:
उदाहरण के लिए:
if __name__ == '__main__':
list_1 = [
{'id': '123-abc', 'name': 'Mike', 'age': 40},
{'id': '123-efg', 'name': 'John', 'age': 24},
{'id': '123-xyz', 'name': 'Aly', 'age': 35}
]
list_2 = [
{'id': '123-abc', 'name': 'Mike', 'age': 40},
{'id': '123-efg', 'name': 'Jon', 'age': 24},
{'id': '123-xyz', 'name': 'Aly', 'age': 32}
]
for i in list_1:
if i not in list_2:
print(i)
आउटपुट:
{'id': '123-efg', 'name': 'John', 'age': 24}
{'id': '123-xyz', 'name': 'Aly', 'age': 35}
उपरोक्त मेथड को लिखने का एक और तरीका है:
def compare_two_lists(list1: list, list2: list) -> bool:
""" दो लिस्ट की तुलना करता है और अंतर लॉग करता है।
:param list1: पहली लिस्ट।
:param list2: दूसरी लिस्ट।
:return: यदि दोनों लिस्ट में अंतर है।
"""
diff = [i for i in list1 + list2 if i not in list1 or i not in list2]
result = len(diff) == 0
if not result:
print(f'There are {len(diff)} differences:\n{diff[:5]}')
return result
Pandas DataFrame का उपयोग करके दो लिस्ट बदलें
नीचे दिया गया उदाहरण कोड दिखाता है कि Pandas DataFrame का उपयोग करके दो लिस्ट की तुलना कैसे करें
from pandas import DataFrame
import pandas as pd
def compare_two_lists(list1: list, list2: list) -> bool:
""" दो लिस्ट की तुलना करता है और अंतर लॉग करता है।
:param list1: पहली लिस्ट।
:param list2: दूसरी लिस्ट।
:return: यदि दोनों लिस्ट में अंतर है।
"""
df1 = pd.DataFrame(list1)
df2 = pd.DataFrame(list2)
diff = dataframe_difference(df1, df2)
result = len(diff) == 0
if not result:
print(f'There are {len(diff)} differences:\n{diff.head()}')
return result
def dataframe_difference(df1: DataFrame, df2: DataFrame) -> DataFrame:
""" दो DataFrames के बीच अलग rows खोजें।
:param df1: पहला dataframe।
:param df2: दूसरा dataframe।
:return: यदि दोनों dataframes में अंतर है।
"""
comparison_df = df1.merge(df2, indicator=True, how='outer')
diff_df = comparison_df[comparison_df['_merge'] != 'both']
return diff_df