Tudok összefűzni egy értéket, amikor hozzá, hogy egy szótár Pythonban?

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

ahelyett, hozzáfűzve listák értékét egy bizonyos kulcsfontosságú szeretnék összefűzésére húrok én érték a hurok. Tehát minden egyes iteráció a legfontosabb lenne hozzá egy-egy más érték, hogy már összefűzött új húr. Hogy tehettem ezt?

A kérdést 19/09/2018 13:22
a forrás felhasználó
Más nyelveken...                            


4 válasz

szavazat
5

strértékek megváltoztathatatlan, így nem lehet összefűzni egy karakterláncot egy meglévő értéket; csak akkor tudjuk cserélni az eredeti egy új karakterlánc alakult a régi húr. A defaultdictleegyszerűsíti ezt.

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

setdefaultnem működik itt, mert azt nem lehet hozzárendelni a visszatérési értéke setdefault, például

>>> d.setdefault("foo", "") += "bar"
  File "<stdin>", line 1
SyntaxError: can't assign to function call    
Válaszolt 19/09/2018 13:28
a forrás felhasználó

szavazat
4

Állítsa egy üres string, mint alapértéket, és összefűzni a szokásos módon

from collections import defaultdict
d = defaultdict(str)
d['a'] += 'hello'
d['a'] += 'world'
print(d)
Válaszolt 19/09/2018 13:27
a forrás felhasználó

szavazat
0

Kaphatunk kívánt kimeneti így már tisztább képet, amit gondolsz, amit olvastam szeretne összefűzni egy stringet egy szótárt érték?

dicta = {'vash': 'the'}

string = ' is concatenating'

lista = [' stampede', string]

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

print(dicta)

output:

(xenial)vash@localhost:~/python/stack_overflow$ python3.7 conc.py 
{'vash': 'the stampede is concatenating'}
Válaszolt 19/09/2018 15:31
a forrás felhasználó

szavazat
-1

Használhatja a dict.getmódszert alapértelmezett értéke egy üres karakterlánc helyett:

dictionary[key] = dictionary.get(key, '') + some_string
Válaszolt 19/09/2018 13:26
a forrás felhasználó

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