2016-07-15 5 views
0

alle. Ich bin neu in Python und brauche dringend Hilfe. Ich versuche, die eindeutigen Werte in einigen Listen zu zählen und dann die Ausgabe nebeneinander als Spalten auszudrucken. Ich kann sie gut mit Sammlungen zählen. Ich weiß jedoch nicht, wie ich sie nebeneinander drucken soll. Gibt es irgendeine pythonische Art, sie als Spalten nebeneinander zu verketten oder anzuzeigen?Python Drucklisten nebeneinander

Ich versuchte das unten, aber ohne Erfolg. JEDE Hilfe wird sehr geschätzt.

print(str(parsed_list(a)) + str(parsed_list(b)) + str(parsed_list(b))) 
NoneNoneNone 

Mein Beispiel Prüfbar-Code (Python3):

import collections, operator 

a = ['Black Cat', 'Black Dog', 'Black Mouse'] 
b = ['Bird', 'Bird', 'Parrot'] 
c = ['Eagle', 'Eagle', 'Eagle', 'Hawk'] 


def parsed_list(list): 
    y = collections.Counter(list) 
    for k, v in sorted(y.items(), key=operator.itemgetter(1), reverse=True): 
     z = (str(k).ljust(12, ' ') + (str(v))) 
     print(z) 

print('Column1   Column2    Column3') 
print('-' * 45) 
parsed_list(a) 
parsed_list(b) 
parsed_list(c) 

Aktuell:

Column1   Column2    Column3 
--------------------------------------------- 
Black Cat 1 
Black Dog 1 
Black Mouse 1 
Bird  2 
Parrot  1 
Eagle  3 
Hawk  1 

gewünschte Ausgabe:

Column1   Column2  Column3 
---------------------------------------- 
Black Cat 1 Bird  2 Eagle 3 
Black Dog 1 Parrot 1 Hawk 1 
Black Mouse 1 
+0

Haben Sie sich mit Pandas mit tabellarischen Daten wie das umgehen? –

+0

@ cricket_007 Leider wird dieses Skript auf einem System ausgeführt, auf dem ich Pandas nicht installieren kann (nicht erlaubt). Gibt es keine einheimische Methode, dies zu tun? Scheint wie etwas, das häufig benötigt würde. – MBasith

Antwort

0

Ich bin sicher, Sie Ihre eigene Bibliothek manuell erstellen können , aber Python scheint ein Format zu haben d in den String-Typ eingebaut, der für Ihren Zweck gut funktionieren könnte.

Diese link eines früheren Beitrags kann Ihnen helfen! Versuch es einmal!

2

Taking eine Abhängigkeit von der tabulate module:

import collections 
from itertools import zip_longest 
import operator 

from tabulate import tabulate 

def parsed_list(lst): 
    width = max(len(item) for item in lst) 
    return ['{key} {value}'.format(key=key.ljust(width), value=value) 
      for key, value in sorted(
       collections.Counter(lst).items(), 
       key=operator.itemgetter(1), reverse=True)] 

a = parsed_list(['Black Cat', 'Black Dog', 'Black Mouse']) 
b = parsed_list(['Bird', 'Bird', 'Parrot']) 
c = parsed_list(['Eagle', 'Eagle', 'Eagle', 'Hawk']) 

print(tabulate(zip_longest(a, b, c), headers=["Column 1", "Column 2", "Column 3"])) 

# Output: 
# Column 1  Column 2  Column 3 
# ------------- ------------- ------------- 
# Black Mouse 1 Bird  2 Eagle  3 
# Black Dog 1 Parrot  1 Hawk  1 
# Black Cat 1 
1
from collections import Counter 
from itertools import zip_longest 
a = ['Black Cat', 'Black Dog', 'Black Mouse'] 
b = ['Bird', 'Bird', 'Parrot'] 
c = ['Eagle', 'Eagle', 'Eagle', 'Hawk'] 

def parse(lst): 
    c = Counter(lst) 
    r = [] 
    for s, cnt in c.most_common(): 
     r += ['%12s%3i' % (s, cnt)] 
    return r 

for cols in zip_longest(parse(a), parse(b), parse(c), fillvalue=15*' '): 
    print(' '.join(cols)) 

Dies erzeugt:

Black Cat 1   Bird 2  Eagle 3 
Black Mouse 1  Parrot 1   Hawk 1 
    Black Dog 1