字典是一種獨特的陣列形式,用於在Python中實作資料結構。字典有幾個相關的特性,使其成為 Python 中非常強大的工具。它以鍵值對的形式儲存數據,其中每個鍵都是唯一標識符,用於存取與其關聯的相應值。
我們可以對該字典執行多種操作並操作其中儲存的資料。本文將解釋這樣一個操作,我們將字典及其鍵分成 K 個相等的字典。
我們必須傳遞一個字典,然後將其分成 K 個相等的字典,其中「K」是原始字典的大小。劃分的方式應該是平均劃分所有鍵。讓我們透過一個例子來理解這一點 -
Input: dict1 = {"Score":100, "Age": 40, "Salary": 25000, "cutoff":44} Output: [{'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}, {'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}, {'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}, {'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}]
這裡與不同鍵關聯的每個值都減少到原始值的 1/K 倍,並傳回 K 個字典的列表。現在我們已經討論了問題陳述,讓我們討論一些解決方案。
在這個方法中,我們將傳遞一個範例字典,然後藉助「len()」方法取得「K」值。該方法將返回字典的長度。之後,我們將迭代範例字典並藉助「/」運算元將每個「鍵值」 除以 K。
我們將把這些分割後的值儲存在一個空字典中,然後藉助「append()」方法將所有新建立的字典加入到一個空列表中。
dict1 = {"Score":100 , "Age": 40, "Salary": 25000, "cutoff":44} print(f"Original dictionary is: {dict1}") K = len(dict1) print(f"The value for K is: {K}") empLis = [] empDict ={} for keys in dict1: empDict[keys] = dict1[keys]/K empLis.append(empDict) print(f"The newly divided dictionary is: {empLis}")
Original dictionary is: {'Score': 100, 'Age': 40, 'Salary': 25000, 'cutoff': 44} The value for K is: 4 The newly divided dictionary is: [{'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}, {'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}, {'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}, {'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}]
此方法是先前解決方案的最佳化版本。在這裡,我們將藉助字典理解和列表理解來總結單一字典和列表中的迭代。傳遞範例字典後,我們將建立一個字典,在其中儲存劃分後的值 (DivDict)。
進行迭代並傳回原始字典除以 K 的鍵。清單 (lisDict) 儲存包含除後值的 K 個字典。我們指定列表的長度等於 K 值。
dict1 = {"Number of sixes":244, "Number of fours": 528, "Strike rate": 164, "Balls faced":864} print(f"Original dictionary is: {dict1}") K = len(dict1) print(f"The value for K is: {K}") #using dictionary comprehension DivDict ={key_value:dict1[key_value]/K for key_value in dict1} #using list comprehension lisDict = [DivDict for i in range(K)] print(f"The newly divided dictionary is: {lisDict}")
Original dictionary is: {'Number of sixes': 244, 'Number of fours': 528, 'Strike rate': 164, 'Balls faced': 864} The value for K is: 4 The newly divided dictionary is: [{'Number of sixes': 61.0, 'Number of fours': 132.0, 'Strike rate': 41.0, 'Balls faced': 216.0}, {'Number of sixes': 61.0, 'Number of fours': 132.0, 'Strike rate': 41.0, 'Balls faced': 216.0}, {'Number of sixes': 61.0, 'Number of fours': 132.0, 'Strike rate': 41.0, 'Balls faced': 216.0}, {'Number of sixes': 61.0, 'Number of fours': 132.0, 'Strike rate': 41.0, 'Balls faced': 216.0}]
還有其他方法涉及使用以下方法: - zip()、lambda()、groupby()、切片等。
當我們必須在程式碼中引入某些規範(例如針對字典中的特定值或鍵)時,可以使用這些方法。上述解決方案是可用來將樣本字典分成 K 個相等部分的基本方法。
在本文中,我們討論了將字典及其鍵劃分為 K 個相等的字典 的兩種解。第一個解決方案圍繞著“循環概念”,我們迭代字典並將其添加到列表中。第二個解決方案著重於更優化的方法,我們將整個循環概念總結為單一字典和列表。
以上是Python程式將字典及其鍵分成K個相等的字典的詳細內容。更多資訊請關注PHP中文網其他相關文章!