Il s'agit d'ajouter des tableaux à un dictionnaire avec une clé spécifique.
L'objectif est d'attribuer un certain nombre de tableaux pour une clé spécifique dans un dictionnaire:
{1: [1,2,3,4], [6,3,2,3], 2: None, 3: None}
Il y a un dictionnaire
my_dict = dict.fromkeys([i for i in range(1,4)]
my_dict
{1: None, 2: None, 3: None}
J'ai un certain nombre de tableaux:
array1 = [1,2,3,4]
array2 = [6,3,2,3]
array3 = [5,7,11,15]
Je souhaite associer array1 à key = 1
my_dict[1] = array1
#the content of the my_dict is:
my_dict
{1: [1, 2, 3, 4], 2: None, 3: None}
Ensuite, je souhaite ajouter array2 associé à la clé 1. MAIS si je fais cela
my_dict[1].append(array2);
#I get
my_dict
{1: [1, 2, 3, 4, [6,3,2,3]], 2: None, 3: None}
En d'autres termes, je voudrais savoir comment ajouter une clé spécifique de manière à obtenir ce qui suit
{1: [1, 2, 3, 4], [6, 3, 2, 3], 2: None, 3: None}
NE PAS
{1: [1, 2, 3, 4, [6,3,2,3]], 2: None, 3: None}
En somme , je voudrais ajouter un certain nombre de tableaux à un dictionnaire pour une clé spécifique de manière à obtenir:
{1: [1,2,3,4], [6,3,2,3], 2: None, 3: None}
Merci, Anthony de Sydney.
4 réponses
Ceci est une extension du premier répondeur et mon commentaire au premier répondeur.
Si j'ai les tableaux suivants:
array1 = [1,2,3,4]
array2 = [2,6,27,1]
array3 = [6,1,2,3]
array4 = [7,1,2,6]
array5 = [8,2,1,6]
array6 = [3,4,1,1]
Mon dictionnaire est le suivant:
from collections import defaultdict
my_dict = defaultdict(list)
Maintenant, je vais ajouter les tableaux suivants pour différentes clés:
my_dict[1].append(array1)
my_dict[1].append(array2)
my_dict[1].append(array3)
my_dict[2].append(array4)
my_dict[3].append(array5)
my_dict[3].append(array6)
Contenu de my_dict
{1:[[1,2,3,4],[2,6,27,1],[6,1,2,3]], 2:[[7,1,2,6]], 3:[[8,2,1,6],[3,4,1,1]] }
Pour obtenir le tableau associé à key = 1
foo = my_dict[1]
foo
[[1,2,3,4],[2,6,27,1],[6,1,2,3]]
Maintenant, pour obtenir la 3e colonne de données:
import numpy as np #Need to use it to convert to array and float later on
foo = np.array(foo);# Have to convert it to an array
doo = foo[:,2]
doo
[3,27,2]
Maintenant, il peut y avoir des situations où votre tableau peut être un mélange de chaîne et de flottant ou entier tel que tous les éléments du tableau sont des chaînes.
foo
[['1','2','3','4'],['2','6','27','1'],['6','1','2','3']]
foo = np.float32(foo)
foo
[[1.,2.,3.,4.],[2.,6.,27.,1.],[6.,1.,2.,3.]]
Conclusion: nous pouvons ajouter des tableaux à un dictionnaire pour une clé spécifique en utilisant le defaultdict. Des sous-ensembles de la matrice sélectionnée peuvent également être extraits via la méthode de sélection de colonne normale. Si le tableau associé à la clé contient des éléments de chaîne, nous pouvons convertir les données en numpy.float32, disons ou partout où nous devons faire un calcul avec des nombres.
Merci, Anthony de Sydney
Je suppose que ce que vous voulez, c'est {1: [[1, 2, 3, 4], [6, 3, 2, 3]], 2: None, 3: None}
. Ensuite, il vous suffit de faire: my_dict[1] = [array1, array2]
. Sinon, si ce que vous voulez est {1: [1, 2, 3, 4, 6, 3, 2, 3], 2: None, 3: None}
, vous devez faire: my_dict[1] += array2
(une fois que vous avez déjà fait my_dict[1] = array1
).
Je ne pense pas que vous puissiez y parvenir.
{1: [1,2,3,4], [6,3,2,3], 2: None, 3: None}
Mais vous pouvez obtenir:
{1: [[1,2,3,4], [6,3,2,3]], 2: [], 3: []}
my_dict = {i:[]for i in range(1,4)}
my_dict[1].append(array1)
my_dict[1].append(array2)
Votre syntaxe est incorrecte. Vous aurez probablement besoin d'un defaultdict
de listes.
Ensuite, utilisez simplement list.append
chaque fois que vous souhaitez ajouter à une liste de listes.
from collections import defaultdict
array1 = [1,2,3,4]
array2 = [6,3,2,3]
array3 = [5,7,11,15]
my_dict = defaultdict(list)
my_dict[1].append(array1)
my_dict[1].append(array2)
defaultdict(list, {1: [[1, 2, 3, 4],
[6, 3, 2, 3]]})
Si, par contre, vous souhaitez une seule liste et souhaitez simplement ajouter des éléments, utilisez list.extend
:
my_dict = defaultdict(list)
my_dict[1].extend(array1)
my_dict[1].extend(array2)
# defaultdict(list, {1: [1, 2, 3, 4, 6, 3, 2, 3]})
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.