2016-07-14 5 views
1

Re-Posted mit testbaren Code als Beispiel.Python nehmen die Ausgabe von for-Schleife und zuweisen Sie es an anderer Stelle

Hallo alle. Könnt ihr Jungs und Mädels mir bitte helfen, das herauszufinden? Ich habe versucht, die Ausgabe einer for-Schleife zu nehmen und es zu verwenden, um eine Übersichtsseite zu drucken. Ich möchte, dass jede Iteration aus der for-Schleife eine Spalte neben der letzten Iteration ist. Kannst du bitte helfen, dies zu erreichen? Deine Hilfe ist sehr Willkommen.

Import Zeit, re, Sammlungen, Betreiber

output_list = [['2016-07-12', 'Magazine', 'News Paper #2', 'Podcast', '1234567', '10-10-10-10', 'ABCDEFG', 'Zoo'], 
['2016-07-12', 'Book', 'News Paper #2', 'Podcast', '1234567', '10-10-10-10', 'ABCDEFG', 'Zoo']] 


def count_types(): 
    item_1 = mm_counts(1) 
    item_2 = mm_counts(4) 
    item_3 = mm_counts(3) 

def mm_counts(a): 
    r = [] 
    for i in output_list: 
     x = (i[a]) 
     #x = (i[0] + ': ' + i[a]) 
     r.append(x) 
    y = collections.Counter(r) 
    #test_list = [] 
    for k, v in sorted(y.items(), key=operator.itemgetter(1), reverse=True): 
     z = (str(k).ljust(5, ' ') + ' ' + (str(v).ljust(5, ' '))) 
     print(z) #<--- I want to print this column and iterate next columns next to each other. 

count_types() 

Stromausgang:

Magazine 1  
Book 1  
1234567 2  
Podcast 2 

gewünschte Ausgabe:

Magazine 1 1234567 2 
Book  1 Podcast 2 
+0

Es sieht so aus, als würden Sie für den Anfang über eine leere 'output_list' iterieren. Können Sie ein reproduzierbares Beispiel veröffentlichen, vielleicht mit einigen Beispieldaten? –

+0

Wenn ich Ihren Code ausführen kann, werde ich versuchen, zu helfen. Haben Sie über etwas wie Pandas nachgedacht, wenn Sie nach einem Gitter suchen? – GMarsh

+0

Hallo ich re-postete mit einem testbaren Beispiel. Können Sie bitte überprüfen und sehen, ob Sie mir in die richtige Richtung zeigen können? – MBasith

Antwort

0

die Anzahl der Spalten Wählen Sie will, Druck auf ein Zeichnen Sie nach jedem Element eine Registerkarte, und gehen Sie jedes Mal zur nächsten Zeile, wenn Sie die gewünschte Anzahl von Elementen gedruckt haben jede Zeile.

Wenn es Ihr Ziel ist, zwei Spalten zu haben, setzen Sie wantedColumns auf zwei. Wenn Ihr Ziel aus zwei Zeilen besteht, setzen Sie selledColumns auf die Gesamtzahl der zu druckenden Elemente, dividiert durch zwei, und runden Sie dann auf.

import time, re, collections, operator 

output_list = [ 
    ['2016-07-12', 'Magazine', 'News Paper #2', 'Podcast', '1234567', '10-10-10-10', 'ABCDEFG', 'Zoo'], 
    ['2016-07-12', 'Book', 'News Paper #2', 'Podcast', '1234567', '10-10-10-10', 'ABCDEFG', 'Zoo']] 


def count_types(): 
    item_1 = mm_counts(1) 
    item_2 = mm_counts(4) 
    item_2 = mm_counts(3) 

def mm_counts(a): 
    r = [] 
    for i in output_list: 
     x = (i[a]) 
     #x = (i[0] + ': ' + i[a]) 
     r.append(x) 
    y = collections.Counter(r) 
    test_list = [] 

    wordsInColumn = 0 
    desiredColumns = 2 

    for k, v in sorted(y.items(), key=operator.itemgetter(1), reverse=True): 
     z = (str(k).ljust(5, ' ') + ' ' + (str(v).ljust(5, ' '))) 
     print (z, end = '\t') 
     wordsInColumn += 1 
     if wordsInColumn % desiredColumns == 0: 
      print('') 

count_types() 

# output: 
# Magazine 1  Book 1  
# 1234567 2  Podcast 2 
+0

Hallo, das funktioniert, wenn sich die Key-Werte nicht ändern. Wenn sie das tun, ist die Formatierung deaktiviert. Kann ich diese Formatierung beibehalten, auch wenn sich die Schlüssel ändern? Zum Beispiel, wenn ich dies als Eingabe für die Liste hätte: 'output_list = [[' 2016-07-12 ',' Magazine ',' News Paper # 2 ',' Podcast ',' 1234567 ', '10 -10- 10-10 ',' ABCDEFG ',' Zoo '], [' 2016-07-12 ',' Buch ',' Nachrichtenblatt # 2 ',' Podcast ',' 1234567 ', '10 -10-10- 10 ',' ABCDEFG ',' Zoo '], [' 2016-07-12 ',' Buch ',' Nachrichtenblatt # 2 ',' Podcast ',' 1234567 ', '10 -10-10-10' , 'ABCDEFG', 'Zoo'], ['2016-07-12', 'Artikel', 'Nachrichtenblatt # 2', 'Podcast', '1234567', '10 -10-10-10 ',' ABCDEFG ',' Zoo ']]' – MBasith

+0

Dies sollte funktionieren, es sei denn, ich verstehe nicht, was Sie tun möchten. Kannst du erklären, was du unter 'Übersichtsseite' meinst? Was genau willst du drucken? – Yaelle

Verwandte Themen