首頁 >後端開發 >Python教學 >Python程式將字典及其鍵分成K個相等的字典

Python程式將字典及其鍵分成K個相等的字典

PHPz
PHPz轉載
2023-08-28 08:57:221189瀏覽

Python程式將字典及其鍵分成K個相等的字典

字典是一種獨特的陣列形式,用於在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中文網其他相關文章!

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