2016-09-08 8 views
1

Ich bin neu in Python und ich möchte zwei Listen in der folgenden Art und Weise anzuhängen:anhängen und einzigartig: Python

list1=[2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2008, 2013, 2014] 

list2=['Bahamas, The', 'Bahamas, The', 'Bahamas, The', 'Bahamas, The', 'Bahamas, The', 'Bahamas, The', 'Bahamas, The', 'Bahamas, The', 'Bahamas, The', 'Bahrain', 'Guyana', 'Guyana'] 

Länge der Liste 1 und 2 sind in jedem Zustand immer gleich.

I want the output to be : 
2006: [’Bahamas, The’] 
2007: [’Bahamas, The’] 
2008: [’Bahamas, The’, ’Bahrain’] 
2009: [’Bahamas, The’] 
2010: [’Bahamas, The’] 
2011: [’Bahamas, The’] 
2012: [’Bahamas, The’] 
2013: [’Bahamas, The’, ’Guyana’] 
2014: [’Bahamas, The’, ’Guyana’] 
+0

Basierend auf welchem ​​Zustand 2008 2013 & 2014 zusätzlichen Wert haben? – AceLearn

Antwort

0

Ich denke, die Datenstruktur, nach der Sie suchen, ist ein Wörterbuch.

Mithilfe dieser Datenstruktur können wir Folgendes tun.

from collections import defaultdict 

ein neues defaultdict erstellen und es list passieren.

d = defaultdict(list) 

Als nächstes müssen wir die beiden Listen zip. Dies kann gemacht werden:

zip(list1, list2) 

Wenn Sie Python verwenden 2, das eine Liste zurück (große, leicht). Wenn Sie jedoch Python 3 verwenden, erzeugt dies einen Generator (siehe here). Also, wenn Sie mit Python 3 (wie ich), um zu sehen, was dieses Ding sieht aus wie Sie den Generator in eine Liste umwandeln können wie folgt:

die so etwas wie dies:

[(2006, 'Bahamas, The'), (2007, 'Bahamas, The'), (2008, 'Bahamas, The')...] 

Jetzt müssen wir tun müssen, ist durch dieses Objekt durchlaufen wie folgt:

for k, v in zip(list1, list2): 
    d[k].append(v) 

Also, alles zusammen:

Um das Ergebnis sehen Sie verwenden können:

for k, v in d.items(): # iteritems if Python 2 
    print(k, v) 

Dies ergibt:

2006 ['Bahamas, The'] 
2007 ['Bahamas, The'] 
2008 ['Bahamas, The', 'Bahrain'] 
2009 ['Bahamas, The'] 
2010 ['Bahamas, The'] 
2011 ['Bahamas, The'] 
2012 ['Bahamas, The'] 
2013 ['Bahamas, The', 'Guyana'] 
2014 ['Bahamas, The', 'Guyana'] 

FYI.

Wenn Sie sich wie eine Liste wirklich würde, und nicht ein Wörterbuch, können Sie verwenden:

list(d.items())  # Python 3 

list(d.iteritems()) # Python 2 
+0

Vielen Dank! Es funktioniert wie Magie! –