2014-02-09 7 views
0

Я написал следующий код:Как напечатать элементы списка в Python

def count(): 
    a = 1 
    b = 5 
    c = 2 
    d = 8 
    i = 0 
    list1 = [a, b, c, d] 
    le = len(list1) 

    while (i < le): 
     x = max(list1) 
     print(x) 
     list1.remove(x) 
     i = i + 1 

То, что я хочу сделать, это напечатать наибольшее число с именем переменной, как:

d:8 
b:5 
c:2 

, но с использованием в приведенном выше коде я могу напечатать только восходящий список чисел, а не соответствующие имена переменных. Пожалуйста, предложите способ исправить это.

+0

Я не совсем понимаю ваши намерения. В чем разница между тем, что вы получаете и что хотите? – Xiphias

+0

Вы имеете в виду «Я могу только нисходящий список без имен переменных», правильно? И вы хотели бы узнать имя переменной. Используйте словарь вместо списка ... тогда вы можете получить доступ к ключу – Floris

+0

Я хочу сказать, что хочу напечатать сообщение типа: Максимальное значение d: 8 Второй максимум b: 5 – user3288315

ответ

3

Используйте dict вместо:

In [2]: dic=dict(a=1, b=5, c=2, d=8) 

In [3]: dic 
Out[3]: {'a': 1, 'b': 5, 'c': 2, 'd': 8} 

In [5]: sortedKeys=sorted(dic, key=dic.get, reverse=True) 

In [6]: sortedKeys 
Out[6]: ['d', 'b', 'c', 'a'] 

In [7]: for i in sortedKeys: 
    ...:  print i, dic[i] 
    ...:  
d 8 
b 5 
c 2 
a 1 
+0

Правильно, хотя я уверен, что 'i' нет в списке. :-) – Floris

+0

Спасибо, но значения переменных a, b, c, d исходят из какой-либо другой функции, поэтому я не могу присвоить их значения в dict – user3288315

+0

@ user3288315: если вы покажете реальный код, тогда кто-то сможет покажите, как получить значения в словаре. –

0

Я думаю, что вы можете использовать OrderedDict()

from collections import OrderedDict 

a, b, c, d = 1, 2, 3, 6 
vars = { 
    'a' : a, 
    'b' : b, 
    'c' : c, 
    'd' : d 
} 

d_sorted_by_value = OrderedDict(sorted(vars.items(), key=x.get, reverse=True)) 

for k, v in d_sorted_by_value.items(): 
    print "{}: {}".format(k,v) 

Список не сохранять имена переменных

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