2016-04-10 11 views
-3

bekam ich dieses Wörterbuch, das mathematische Polynom darstellt:Python dict zur Liste (. Math Polynome)

{'x1': 2, 'x0': 1, 'x3': 3} 

Ich mag es auf eine Liste konvertieren (aber sie werden in zufälliger Reihenfolge sein können, oder ohne Null-Mitglieder) :

{'x1': 2, 'x0': 1, 'x3': 3} 

zu

[1,2,0,3] 
+2

Was die Logik dahinter ist? – styvane

Antwort

0

zunächst die Schlüssel in brauchbarer Zahlen konvertieren:

poly_dict = {int(term[1:]): power for term, power in poly_dict.items()} 

Dies setzt voraus, dass jeder Begriff mit x beginnt so kann es nur durch Abschneiden des ersten Zeichens entfernt werden, das heißt term[1:].

Dann die maximale Leistung finden:

max_power = max(poly_dict.keys()) 

eine Liste der Zuständigkeiten Initialisiere, auf 0 säumige, mit einer Zelle für jeden Begriff:

poly_list = [0] * (max_power + 1) 

Dann ist es ausfüllen:

for term, power in poly_dict.items(): 
    poly_list[term] = power 
0

Haben Sie die Werte des Wörterbuchs als Liste wollen? Sie können dies einfach mit

d = {'x1': 2, 'x0': 1, 'x3': 3} 
values = list(d.values()) 

archivieren So Werte werden [2, 1, 3]. Was meinst du mit null Mitglied?

+0

Null Mitglied ist "x2": 0, die nicht im Wörterbuch ist – LukinM26

+0

@ LukinM26 Also das Problem gelöst? – Querenker

0

Versuchen [x for x,y in dictionary.items().sort(key=lambda x,y: int(x[1:]))] Dies konvertiert das Wörterbuch in eine Liste von Tupeln und sortiert die Liste nach der Zahl nach dem "x" im Schlüsselbegriff. Und gibt die Werte sortiert nach den Schlüsseln als solche aus.

0

Wenn ich Ihr Problem richtig verstehe, versuchen Sie etwas wie:

MAX_ORDER = 20 
p = [] 
for i in range(MAX_ORDER+1) : 
    try: 
     p += [d['n'+str(i)]] 
    except: 
     p += [0] 
while not p[-1]: 
    p.pop() 

Vielleicht die effizienteste Methode, wenn auch nicht sein ...