2017-08-26 1 views
0

Ich arbeite an einer Funktion zum Erstellen einer neuen Bibliothek, die einen wiederkehrenden Wert aus einem Bibliothekselement kombiniert [a] mit der Summe der Werte aus einem Bibliothekselement [b]. Geben Sie außerdem für eine gegebene Länge n dem nicht angegebenen Schlüssel 0.Erstellen Sie eine neue Bibliothek [b], die einen Wiederholungsschlüssel aus einer Bibliothek [a] mit Summenwerten aus einer Bibliothek [a] koppelt

beispielsweise d = {a: [1, 2, 2, 5], b [3,2,2,1]}

return d = {1: 3, 2: 4, 3 : 0, 4: 0, 5: 1}

Hat jemand eine Idee, um dieses Problem entweder mit set() oder defaultdict() zu lösen?

Danke.

mein aktueller Fortschritt:

from collections import defaultdict 
d = {} 
d['a'] = [1, 2, 2, 5] 
d['b'] = [3,2,2,1] 
x = list(zip(d['a'],d['b'])) 
output = defaultdict(int) 
for a,b in x: 
output[a]+=b 
x = dict(output) 
x = dict(output) 
sorted_x = sorted(x.items(), key=lambda x: x[0]) 

print (sorted_x) 
n= 8 
y = dict(sorted_x) 
for i, j in dict(sorted_x).items(): 
for a in range (n):......... 

Allerdings habe ich keine Ahnung, neue Paare in y zuweisen

+0

python oder C++ ?? –

+0

Entschuldigung. Ich benutze python3 – derec

Antwort

0

Python nicht Nachschlüssel in Wörterbuch unterstützt.

Wenn Sie definieren Wörterbuch wie d = {1: 1, 4: 2, 1: 3},

dann Python halten nur einen eindeutigen Schlüssel wie d = {1: 3 , 4: 2}

ich glaube, Sie unten Ansatz verwenden:

from collections import defaultdict 
d=[(1,1),(4,2),(1,3)] # Use List of tuples to stores all the duplicate keys 
output = defaultdict(int) 
for k,v in d: 
    output[k]+=v 
print output 
Verwandte Themen