Maison > Article > développement back-end > 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.
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}]
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.
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()".
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}]
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.
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}]
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.
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!