በዚህ ጽሑፍ ውስጥ በፓይዘን ውስጥ ሁለት መዝገበ-ቃላትን እንዴት ማወዳደር እንደሚቻል እና እንዲሁም በሁለቱ ዝርዝሮች መካከል ያሉትን ልዩነቶች ማተም እንደሚቻል እንመለከታለን ፡፡
የንፅፅር ዘዴ ቁልፎችን ያነፃፅራል እና በመዝገበ-ቃላት ውስጥ እሴቶች.
እንዲሁም በፓይዘን ውስጥ ሁለት የመዝገበ-ቃላት ዝርዝርን ሲያወዳድሩ የንጥሎች ቅደም ተከተል ምንም ችግር የለውም ፡፡
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