2014-02-09 171 views
0

我写了下面的代码:在Python如何打印列表项

d:8 
b:5 
c:2 

但使用:

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 

我想要做的就是像它的变量名称打印数量最多上面的代码我只能打印数字的升序列表,而不是相应的变量名称。请建议一种方法来解决这个问题。

+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

正确,但我很确定'我'不在列表中。 :-) – Floris

+0

谢谢,但A,B,C,d是从其他一些功能来的变量的值,所以我不能为它们分配在字典 – 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) 

列表不保存变量名