Programme Python pour diviser un dictionnaire et ses clés en K dictionnaires égaux

PHPz
Libérer: 2023-08-28 08:57:22
avant
1138 Les gens l'ont consulté

Programme Python pour diviser un dictionnaire et ses clés en K dictionnaires égaux

Un dictionnaire est une forme unique de tableau utilisée pour implémenter des structures de données en Python. Les dictionnaires possèdent plusieurs fonctionnalités connexes qui en font un outil très puissant en Python. Il stocke les données sous forme de paires clé-valeur, où chaque clé est un identifiant unique utilisé pour accéder à la valeur correspondante qui lui est associée.

Nous pouvons effectuer diverses opérations sur ce dictionnaire et manipuler les données qui y sont stockées. Cet article expliquera une telle opération où nous divisons un dictionnaire et ses clés en K dictionnaires égaux.

Comprendre le problème

Nous devons transmettre un dictionnaire puis le diviser en K dictionnaires égaux, où "K" est la taille du dictionnaire original. La méthode de partitionnement doit consister à diviser toutes les clés de manière égale. Comprenons cela à travers un exemple -

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}]
Copier après la connexion

Ici, chaque valeur associée à une clé différente est réduite à 1/K fois la valeur d'origine et une liste de K dictionnaires est renvoyée. Maintenant que nous avons discuté de l'énoncé du problème, discutons de quelques solutions.

Utiliser l'itération

Dans cette méthode, nous passerons un dictionnaire d'exemples puis obtiendrons la valeur « K » à l'aide de la méthode « len() ». Cette méthode renverra la longueur du dictionnaire. Après cela, nous allons parcourir l'exemple de dictionnaire et diviser chaque "valeur clé" par K à l'aide de l'opérande "/".

Nous stockerons ces valeurs divisées dans un dictionnaire vide, puis ajouterons tous les dictionnaires nouvellement créés à une liste vide à l'aide de la méthode "append()".

Exemple

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}")
Copier après la connexion

Sortie

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}]
Copier après la connexion

Utilisez la compréhension de liste et la compréhension de dictionnaire

Cette méthode est une version optimisée de la solution précédente. Ici, nous résumerons les itérations sur un seul dictionnaire et une seule liste à l'aide de la compréhension du dictionnaire et de la compréhension de la liste. Après avoir passé l'exemple de dictionnaire, nous créerons un dictionnaire dans lequel nous stockerons les valeurs divisées (DivDict).

Itère et renvoie le dictionnaire original divisé par K clés. List (lisDict) stocke K dictionnaires contenant des valeurs divisées. On précise que la longueur de la liste est égale à la valeur K.

Exemple

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}")
Copier après la connexion

Sortie

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}]
Copier après la connexion

Il existe d'autres méthodes impliquant l'utilisation de : - zip(), lambda(), groupby(), slice etc.

Ces méthodes peuvent être utilisées lorsque nous devons introduire certaines spécifications dans le code, comme pour une valeur ou une clé spécifique dans un dictionnaire. La solution ci-dessus est l’approche de base qui peut être utilisée pour diviser l’exemple de dictionnaire en K parties égales.

Conclusion

Dans cet article, nous avons discuté de deux solutions pour partitionner un dictionnaire et ses clés en K dictionnaires égaux. La première solution s'articule autour du "concept de boucle" où nous parcourons le dictionnaire et l'ajoutons à la liste. La deuxième solution se concentre sur une approche plus optimisée, dans laquelle nous résumons l’ensemble du concept de boucle dans un seul dictionnaire et une seule liste.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!