2016-04-10 5 views
-3

Я получил этот словарь, который представляет математические полиномы:Python Dict в список (. Математика многочлены)

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

Я хочу, чтобы преобразовать его в список (но они могут быть в произвольном порядке, или без нулевых членов) :

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

в

[1,2,0,3] 
+2

Какова логика этого? – styvane

ответ

0

Сначала конвертировать ключи в более пригодные для использования номеров:

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

Это предполагает, что каждый член начинается с x так это просто может быть удалено отрезая первый символ, т.е. term[1:].

Затем найти максимальную мощность:

max_power = max(poly_dict.keys()) 

Инициализируют перечень полномочий, по умолчанию 0, с ячейкой для каждого члена:

poly_list = [0] * (max_power + 1) 

Затем залейте его в:

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

вы хотите значения словаря в списке? Вы можете просто архивировать это с помощью

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

Значения будут [2, 1, 3]. Что вы имеете в виду с нулевым членом?

+0

Zero member is «x2»: 0, которого нет в словаре – LukinM26

+0

@ LukinM26 Итак, это решило вашу проблему? – Querenker

0

Try [x for x,y in dictionary.items().sort(key=lambda x,y: int(x[1:]))] Это преобразовывает словарь в список кортежей и сортирует список по числу после «x» в ключевом терминале. И выводит значения, отсортированные по ключам как таковые.

0

Если я правильно понимаю вашу проблему, попробуйте что-то вроде:

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() 

Может быть, не самый эффективный метод, хотя ...

Смежные вопросы