2017-11-21 1 views
-4

Ich habe folgende Listen unten und mochte die Inventarwerte summieren, die die gleiche Anlagennummer haben, so dass ich etwas ähnliches wie untenAddition von zwei Listen mit gleicher Anlagennummer

Asset number Total 
11230202  10500.5 
11230101  79 
11230213  0 
11230228  0 

Vermögen bekommen Nummernliste:

[u '11.230.202', u '11.230.101', u '11.230.202', u '11.230.213', u ' 11.230.202', u '11.230.232', u '11.230.202', ‚u 11.230.202 "11230202 ", "11230101", "11230202", "11230202" 'U' 11230228 'u' 11.230.202 'u' 11.230.202 'u' 11.230.202 'u' 11.230.202 'u' 11.230.101 ‚]

Vermögenswerteliste:

[10000.0, 10, 0, 0, 0, 0, 500,5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69]

+1

Was haben Sie bisher versucht, und wo sind Sie stecken? – bgse

+0

Willkommen bei StackOverflow. Bitte lesen und befolgen Sie die Buchungsrichtlinien in der Hilfe. [zum Thema] (http://stackoverflow.com/help/on-topic) und [how to ask] (http://stackoverflow.com/help/how-to-ask) gilt hier. StackOverflow ist kein Design-, Codierungs-, Recherche- oder Lernprogramm. – Prune

Antwort

0

können Sie collections.defaultdict verwenden:

from collections import defaultdict 
s = map(int, [u' 11230202 ', u' 11230101 ', u' 11230202 ', u' 11230213 ', u' 11230202 ', u' 11230232 ', u' 11230202 ', u' 11230202 ', u' 11230202 ', u' 11230101 ', u' 11230202 ', u' 11230202 ', u' 11230228 ', u' 11230202 ', u' 11230202 ', u' 11230202 ', u' 11230202 ', u' 11230101 ']) 
s1 = [10000.0, 10, 0, 0, 0, 0, 500.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69] 
d = defaultdict(list) 
for a, b in zip(s, s1): 
    d[a].append(b) 

final_d = {a:sum(b) for a, b in d.items()} 
for a, b in sorted(final_d.items(), key=lambda x:x[-1], reverse=True): 
    print(a, b) 

Ausgang:

(11230202, 10500.5) 
(11230101, 79) 
(11230232, 0) 
(11230228, 0) 
(11230213, 0)