Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> 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 बराबर हैं। अर्थात्, प्रत्येक शब्दकोश में दोनों सूचियों में समान आइटम (कुंजी और मान) होते हैं। प्रत्येक शब्दकोश में तत्वों का क्रम अप्रासंगिक है।

शब्दकोशों की सूची की तुलना करें - प्रिंट अंतर

हम यह भी प्रिंट कर सकते हैं कि सूचियों में कौन से शब्दकोश आइटम अलग हैं:

उदाहरण के लिए:

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:\n{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:\n{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

  1. दो पायथन सूची तत्वों को जोड़ना

    सूचियों को पायथन में जोड़ा जा सकता है जिसके परिणामस्वरूप दोनों सूचियों के तत्वों वाली एक नई सूची तैयार की जा सकती है। दो सूचियों को जोड़ने के लिए विभिन्न दृष्टिकोण हैं और उनका वर्णन नीचे किया गया है। लेकिन इन सभी मामलों में सूचियाँ समान लंबाई की होनी चाहिए। परिशिष्ट का उपयोग करना () एपेंड () का उपय

  1. दो शब्दकोशों को मर्ज करने के लिए पायथन कार्यक्रम

    इस ट्यूटोरियल में, हम सीखेंगे कि पायथन . में दो शब्दकोशों को कैसे संयोजित किया जाए . आइए दो शब्दकोशों को मिलाने के कुछ तरीके देखें। अपडेट () विधि सबसे पहले, हम शब्दकोश की अंतर्निहित विधि देखेंगे अपडेट () विलय करने के लिए। अपडेट () विधि रिटर्न कोई नहीं ऑब्जेक्ट और दो शब्दकोशों को एक में जोड़ता है। आ

  1. पायथन में दो सूचियों से शब्दकोश कैसे बनाएं?

    यदि L1 और L2 सूची ऑब्जेक्ट हैं जिनमें कुंजी और संबंधित मान हैं, तो निम्न सूची समझ सिंटैक्स का उपयोग डिक्शनरी ऑब्जेक्ट के निर्माण के लिए किया जा सकता है। >>> L1 = [a,b,c,d] >>> L2 = [1,2,3,4] >>> d = {L1[k]:L2[k] for k in range(len(L1))} >>> d {a: 1, b: 2, c: 3, d