Puis-je concaténer une valeur lors de l'ajout d'un dictionnaire en Python?

voix
3
dictionary.setdefault(key, []).append(somelist)

au lieu d'ajouter des listes à la valeur d'une certaine clé que je veux concaténer des chaînes à ma valeur dans une boucle. Donc, chaque itération la clé serait la carte à une autre valeur qui a été concaténé avec une nouvelle chaîne. Comment pourrais-je faire cela?

Créé 19/09/2018 à 13:22
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
5

strLes valeurs sont immuables, de sorte que vous ne pouvez pas concaténer une chaîne à une valeur existante; vous ne pouvez remplacer l'original par une nouvelle chaîne formée à partir de l'ancienne chaîne. Un defaultdictSimplifie cela.

>>> d = collections.defaultdict(str)
>>> d["foo"] += "bar"
>>> d["foo"] += "baz"
>>> d["foo"]
'barbaz'

setdefaultne fonctionne pas ici parce que vous ne pouvez pas attribuer à la valeur de retour setdefault, par exemple

>>> d.setdefault("foo", "") += "bar"
  File "<stdin>", line 1
SyntaxError: can't assign to function call    
Créé 19/09/2018 à 13:28
source utilisateur

voix
4

Définir une chaîne vide comme une valeur par défaut, et concaténer comme d'habitude

from collections import defaultdict
d = defaultdict(str)
d['a'] += 'hello'
d['a'] += 'world'
print(d)
Créé 19/09/2018 à 13:27
source utilisateur

voix
0

Peut-on se débit désiré nous avons donc l'image plus claire de ce que vous entendez, ce que je vous lis voulez concaténer une chaîne à une valeur dictionnaire?

dicta = {'vash': 'the'}

string = ' is concatenating'

lista = [' stampede', string]

for i in lista:
    for k in dicta:
        dicta[k] += i

print(dicta)

Sortie:

(xenial)vash@localhost:~/python/stack_overflow$ python3.7 conc.py 
{'vash': 'the stampede is concatenating'}
Créé 19/09/2018 à 15:31
source utilisateur

voix
-1

Vous pouvez utiliser la dict.getméthode pour une valeur par défaut d'une chaîne vide à la place:

dictionary[key] = dictionary.get(key, '') + some_string
Créé 19/09/2018 à 13:26
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more