ፓይዘን ሁለት የመዝገበ-ቃላት ዝርዝሮችን ያነፃፅሩ

በዚህ ጽሑፍ ውስጥ በፓይዘን ውስጥ ሁለት መዝገበ-ቃላትን እንዴት ማወዳደር እንደሚቻል እና እንዲሁም በሁለቱ ዝርዝሮች መካከል ያሉትን ልዩነቶች ማተም እንደሚቻል እንመለከታለን ፡፡

የንፅፅር ዘዴ ቁልፎችን ያነፃፅራል እና በመዝገበ-ቃላት ውስጥ እሴቶች.

እንዲሁም በፓይዘን ውስጥ ሁለት የመዝገበ-ቃላት ዝርዝርን ሲያወዳድሩ የንጥሎች ቅደም ተከተል ምንም ችግር የለውም ፡፡




በፓይዘን ውስጥ የመዝገበ-ቃላት ዝርዝርን ያወዳድሩ

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 እኩል ናቸው ፡፡ ማለትም እያንዳንዱ መዝገበ ቃላት በሁለቱም ዝርዝሮች ውስጥ ተመሳሳይ እቃዎችን (ቁልፎችን እና እሴቶችን) ይይዛል። በእያንዳንዱ መዝገበ-ቃላት ውስጥ ያሉት ንጥረ ነገሮች ቅደም ተከተል አግባብነት የለውም።



የመዝገበ-ቃላት ዝርዝርን ያወዳድሩ - የህትመት ልዩነቶች

በዝርዝሮቹ ውስጥ የትኛውን የመዝገበ-ቃላት ንጥሎች የተለያዩ እንደሆኑ ማተምም እንችላለን-


ለምሳሌ:

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:
'''
Compare two lists and logs the difference.
:param list1: first list.
:param list2: second list.
:return:
if there is difference between both lists.
'''
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: {diff[:5]}')
return result


የፓንዳስ ዳታፍራምን በመጠቀም ሁለት ዝርዝሮችን ይቀይሩ

ከዚህ በታች ያለው የምሳሌ ኮድ ፓንዳስ ዳታፍራምን በመጠቀም ሁለት ዝርዝሮችን እንዴት ማወዳደር እንደሚቻል ያሳያል


from pandas import DataFrame import pandas as pd def compare_two_lists(list1: list, list2: list) -> bool:
'''
Compare two lists and logs the difference.
:param list1: first list.
:param list2: second list.
:return:
if there is difference between both lists.
'''
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: {diff.head()}')
return result def dataframe_difference(df1: DataFrame, df2: DataFrame) -> DataFrame:
'''
Find rows which are different between two DataFrames.
:param df1: first dataframe.
:param df2: second dataframe.
:return: if there is different between both dataframes.
'''
comparison_df = df1.merge(df2, indicator=True, how='outer')
diff_df = comparison_df[comparison_df['_merge'] != 'both']
return diff_df