Python程式:提取自定義值的字典項
自定義值是在特定標準下定義和選擇的特定值。在一個大型複雜的資料集中,**規範性**對於構建**最佳化**的程式非常重要,因此提取相關資料就變得非常重要。我們可以傳遞一個參考列表,根據該列表提取值。
此參考列表具有其自身的意義,因為它儲存簡潔的資訊。在本文中,我們將討論一個類似的概念,即針對透過列表傳遞的自定義資料提取字典項(鍵和值)。
理解問題
我們將建立一個包含某些資料的字典。每個鍵都將與不同的值關聯,然後我們將傳遞一個儲存多個值的參考列表。字典值等於參考值的所有字典項都將被提取,即應隔離與列表值匹配的字典中的所有值及其對應的“**鍵**”。
輸入輸出場景
讓我們考慮一個具有以下值的字典:
Input: dict1 = {"Grapes":12, "Mangoes":18, "Apples":10, "Strawberries":4, "Coconut":24} lis1 = [13, 18, 4, 22]
我們可以看到,參考列表中的值“**18**”和“**4**”與字典鍵“**Mangoes**”和“**Strawberries**”的值匹配。因此,應返回以下輸出:
Output: {'Mangoes': 18, 'Strawberries': 4}
既然我們已經理解了問題陳述,讓我們討論一些解決方案。
使用迴圈(迭代)
建立字典後,我們將使用**for迴圈**來迭代鍵和值。我們將建立一個空字典,它將只儲存提取的字典項。
我們還將迭代參考列表,然後將每個列表值與不同的字典值進行匹配。我們將建立一個“**if**”條件來檢查這些匹配值,然後將它們儲存到空字典中。
示例
以下是使用迴圈提取自定義值的字典項的示例:
dict1 = {"Grapes":12, "Mangoes":18, "Apples":10, "Strawberries":4, "Coconut":24} lis1 = [13, 18, 4, 22] dict2 = {} print(f"The original dictionary is: {dict1}") for keys, values in dict1.items(): for x in lis1: if values == x: dict2[keys] = values print(f"The new dictionary consisting of custom values: {dict2}")
輸出
The original dictionary is: {'Grapes': 12, 'Mangoes': 18, 'Apples': 10, 'Strawberries': 4, 'Coconut': 24} The new dictionary consisting of custom values: {'Mangoes': 18, 'Strawberries': 4}
使用字典推導式
執行此程式的另一種有效且簡潔的方法是使用字典推導式。藉助此技術,我們可以生成一行程式碼來涵蓋整個迭代概念。這種方法允許我們編寫一個簡潔且易於閱讀的程式來提取字典項。
示例
以下是一個示例:
dict1 = {"Grapes":12, "Mangoes":18, "Apples":10, "Strawberries":4, "Coconut":24} lis1 = [13, 18, 4, 22] print(f"The original dictionary is: {dict1}") dict2 = {keys: values for keys, values in dict1.items() if values in lis1} print(f"The new dictionary consisting of custom values: {dict2}")
輸出
The original dictionary is: {'Grapes': 12, 'Mangoes': 18, 'Apples': 10, 'Strawberries': 4, 'Coconut': 24} The new dictionary consisting of custom values: {'Mangoes': 18, 'Strawberries': 4}
使用Lambda函式 + filter()函式
在這種方法中,我們將使用filter()函式來選擇等於參考列表值的字典值。我們還將為此filter()函式的第一個引數傳遞一個**lambda函式**。
lambda函式將充當匿名過濾函式,用於確定過濾後的字典中是否應該存在字典項。“**items[1]**”指的是與每個鍵值對關聯的值。
示例
以下是一個示例:
dict1 = {"Grapes":12, "Mangoes":18, "Apples":10, "Strawberries":4, "Coconut":24} lis1 = [13, 18, 4, 22] print(f"The original dictionary is: {dict1}") dict2 = dict(filter(lambda items: items[1] in lis1, dict1.items())) print(f"The new dictionary consisting of custom values: {dict2}")
輸出
The original dictionary is: {'Grapes': 12, 'Mangoes': 18, 'Apples': 10, 'Strawberries': 4, 'Coconut': 24} The new dictionary consisting of custom values: {'Mangoes': 18, 'Strawberries': 4}
其他解決方案和寶貴見解
還有其他幾種解決方案,包括使用“**map()**”函式以及lambda和filter函式。我們還可以將字典和列表值轉換為“集合”,然後檢索公共值。這些自定義值的檢索在資料視覺化和資料集管理中起著重要作用。我們還可以透過建立一個涵蓋所有型別值的通用程式來檢索其他資料型別。
結論
在本文中,我們討論了提取自定義值字典項的各種解決方案。首先,我們使用簡單的**迭代**方法遍歷字典和參考列表值。在我們的第二種方法中,我們使用了**字典推導式**的概念,對於最終解決方案,我們使用了**filter()**和**lambda**函式。最後,我們討論了一些替代解決方案以及一些與自定義值提取相關的寶貴見解。