首頁 >後端開發 >Python教學 >Python - 從字典的值列表中篩選奇數元素

Python - 從字典的值列表中篩選奇數元素

PHPz
PHPz轉載
2023-09-01 10:57:031469瀏覽

Python - 从字典的值列表中筛选奇数元素

字典是Python中一種流行的資料類型,它有一個鍵值對,並且不允許重複。為了過濾奇數元素,它有一些內建函數,例如 items()、filter()、lambda,並且 list() 將用於從字典中的值列表中過濾奇數元素。列表中的奇數元素是那些不能被 2 整除的元素。

例如 -

給定列表,[10, 22, 21, 19, 2, 5]

從列表中過濾奇數元素後:

最終結果變成[10, 22, 2](這些是能被整數2整除的元素)。

文法

範例中使用以下語法 -

items()

這是一個內建方法,可用來傳回視圖物件。該物件由帶有值對的鍵組成。

filter()

Python的filter()元素用於根據特定條件過濾元素。

lambda

函數 lambda 提供了使用 lambda 關鍵字宣告簡短匿名函數的捷徑。當使用 def 關鍵字聲明時,lambda 函數會起作用。

list()

list() 是內建的 Python,它會建立列表對象,它接受可迭代構造並將其轉換為列表。

x % 2 != 0
or
x % 2 == 1

上述兩種表示都說明了從值列表中過濾奇數元素的邏輯。

透過 if-else 語句使用字典理解和列表理解

程式使用字典理解,透過過濾奇數元素將原始字典轉換為新字典。可以透過使用 if-else 語句的列表壓縮來過濾這個奇怪的元素。

範例

在以下範例中,使用名為odd_element 的函數啟動程序,該函數接受名為dictionary 的參數。相同的參數與理解技術一起使用,即 listdictionary 以及 if-statement 來設定值列表中奇數元素的過濾器字典。然後建立字典的值清單並將它們儲存在名為 dictionary 的變數名稱中。接下來,使用呼叫函數並將參數名稱作為字典傳遞,其中包含鍵值對並將其儲存在變數 filter_dict 中。最後,我們在變數filter_dict的幫助下列印結果。

def odd_elements(dictionary):
   return {key: [x for x in value if x % 2 != 0] for key, value in dictionary.items()}

# Create the dictionary
dictionary = {'A': [2, 4, 16, 19, 17], 'B': [61, 71, 90, 80, 10], 'C': [11, 121, 13, 14, 15]}
filter_dict = odd_elements(dictionary)
print("Filter odd elements from the value lists in dictionary:\n", filter_dict)

輸出

Filter odd elements from the value lists in dictionary:
{'A': [19, 17], 'B': [61, 71], 'C': [11, 121, 13, 15]}

將 for 迴圈和 Filter() 與 Lambda 函數結合使用

程式使用 for 迴圈,將使用內建方法 items() 迭代字典項目的鍵和值。然後它將使用嵌套的內建函數(如 list()、filter() 和 lambda)從字典列表中刪除奇數元素。

範例

在下面的範例中,我們將使用 for 迴圈來迭代變數字典,其中包含帶有值列表的鍵。為了過濾奇數元素,它將使用三個嵌套的內建函數,即list()、filter() 和lambda()[此函數將條件設為x%2 != 0,它將檢查給定值列表是否為整數是否能被2整除]並將其儲存在變數filtered_dictionary中。過濾奇數元素後,將filtered_dictionary的值設定在filtered_dictionary中。然後創建由鍵和值列表組成的字典並將其儲存在變數字典中。現在這個變數設定在呼叫函數 odd_element() 的參數中,並儲存在變數 filter_dict() 中。

def odd_elements(dictionary):
   filtered_dictionary = {}
# for loop
   for key, value in dictionary.items():
# Using filter() with lambda
      filtered_values = list(filter(lambda x: x % 2 != 0, value))
      filtered_dictionary[key] = filtered_values
   return filtered_dictionary
# create the dictionary
dictionary = {'A': [1, 2, 3, 4, 5], 'B': [6, 7, 8, 9, 10], 'C': [11, 12, 13, 14, 15], 'D': [16, 17, 18, 19, 20]}
filter_dict = odd_elements(dictionary)
print("Filter odd elements from the value lists in dictionary:\n", filter_dict)

輸出

Filter odd elements from the value lists in dictionary:
 {'A': [1, 3, 5], 'B': [7, 9], 'C': [11, 13, 15], 'D': [17, 19]}

使用 for 迴圈和清單理解

程式使用 for 迴圈使用內建方法 items() 來迭代字典和鍵,然後它將在代表列表理解的一行中使用 for 迴圈和 if 語句。

範例

在下面的範例中,透過定義名為filter_odd_elements() 的函數開始程序,該函數接受名為dictionary 的參數來存取其值。接下來,在變數 filter_dictionary 中建立空字典,稍後將儲存新字典作為結果。然後它將使用 for 迴圈來迭代字典的每個值列表。繼續使用 for 和 if 語句的清單理解並將其儲存在變數 filter_values 中。交換 filter_dictionary[key] 中的相同變數。然後傳回過濾結果不含奇數元素的filter_dictionary。建立一個包含值清單的字典並將其儲存在變數 dict 中。名為f_dictionary的新變數儲存遞歸函數以傳遞名為dict的參數。最後,使用接受變數f_dictionary的列印函數來取得結果。

def filter_odd_elements(dictionary):
   filter_dictionary = {}
   for key, value in dictionary.items():
# List Comprehension
      filter_values = [x for x in value if x % 2 != 0]
      filter_dictionary[key] = filter_values
   return filter_dictionary
# Creation of dictionary
dict = {'A': [307, 907], 'B': [100, 200], 'C': [110, 120]}
# use the calling function
f_dictionary = filter_odd_elements(dict)
print("Filtration of odd elements from dictionary value list:\n", f_dictionary)

輸出

Filtration of odd elements from dictionary value list:
 {'A': [307, 907], 'B': [], 'C': []}

將字典理解和 Filter() 與 Lambda 函數結合使用

該程式使用字典理解來幫助將一本字典轉換為新形式的字典。 filter() 方法使用 lambda 函數從字典的值列表中消除奇數元素。

範例

在下面的範例中,我們將展示字典理解如何使用三種方法根據值列表中的奇數元素過濾器設定邏輯,並使用 for 迴圈迭代字典的每個鍵和值。

def odd_elements(dictionary):
   return {key: list(filter(lambda x: x % 2 == 1, value)) for key, value in dictionary.items()}

# Create the dictionary
dict_1 = {'I': [1, 2, 3, 4, 5], 'II': [6, 7, 8, 9, 10], 'III': [11, 12, 13, 14, 15]}
filter_dict = odd_elements(dict_1)
print("ODD NUMBER FILTRATION IN DICTIONARY VALUES:\n", filter_dict)

輸出

ODD NUMBER FILTRATION IN DICTIONARY VALUES:
 {'I': [1, 3, 5], 'II': [7, 9], 'III': [11, 13, 15]}

使用字典理解和列表理解

程式使用遞歸函數,透過使用 return 語句傳回理解技術。

範例

在下面的範例中,我們將在程式中使用遞歸函數從字典的值中過濾掉奇數元素,並傳回具有相同鍵和過濾值的新字典。

def odd_elements(dictionary):
   return {key: [x for x in value if x % 2 == 1] for key, value in dictionary.items()}
# create the dictionary and store the value by odd and even in the list
dictionary = {'list1': [100, 200, 300, 499, 599], 'list2': [699, 799, 899, 900, 1000]}
filter_dict = odd_elements(dictionary)
print("ODD NUMBER FILTRATION IN DICTIONARY VALUES:\n", filter_dict)

输出

ODD NUMBER FILTRATION IN DICTIONARY VALUES:
 {'list1': [499, 599], 'list2': [699, 799, 899]}

结论

我们讨论了基于从字典中的值列表中过滤奇数元素来解决此问题陈述的各种方法。上述所有示例大多使用综合技术,通过使用某种方法、循环或条件语句在 1-2 行内解决问题。当我们想要通过分配特定条件来过滤数据时,通常会使用程序目的。

以上是Python - 從字典的值列表中篩選奇數元素的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除