改变的关键排序的Python字典,现在当我试图来遍历它,它通过改变关键

问题描述:

我有数组的字典在Python迭代,从而改变的关键排序的Python字典,现在当我试图来遍历它,它通过改变关键

dictionary={a:[1,2,3,4],b:[2,3,4,8],c:[3,5,6,5]} 

等等等等

我已经排序的字典,使得它现在是由每个数组的第四个项目进行排序,因此为了进入b,C,A

dictionary=sorted(dictionary.values(),key=itemgetter(3),reverse=True) 

的问题是,当我尝试遍历钥匙它会像阵列本身一样发射出密钥。

for key in dictionary: 
    print(key) 

打印出[2,3,4,8],但是,我希望它通过B,C,一个以该顺序进行迭代。

有没有简单的方法来做到这一点?

+4

这不是真正的代码。 Python中没有'TRUE'。你正在用'4'进行搜索,但是列表索引从Python中的'0'开始,所以你的列表中没有'4'的元素。字典定义将是无效的,因为'a','b'是未定义的。 – e4c5

+0

你想要做什么? – Rosh

+0

@ e4c5嗯,我很抱歉,我在*有点新,并且正在复制另一台计算机的代码。至于字典,它只是一个例子,假设字典['a']返回[1,2,3,4]等等。 – nimbyest

你忘记了一个关于python字典的小而重要的观点。他们不能被分类!

你在代码中实际做的是排序字典值。要使字典显示为已排序,您需要创建一个由字典键组成的排序列表。

keys = sorted(dictionary, key=lambda x: (dictionary[x][3],x)) 
for k in keys: 
    print (k, dictionary[k]) 
+0

哦,这人真的工作。谢谢你,你是一个救生员。虽然我将不得不添加一个“reverse = True”到排序结尾。但是,谢谢,我在这个问题上花了这么长时间。 – nimbyest

+1

很高兴能得到帮助 – e4c5

+1

@nimbyest与大多数编程语言一样,Python按最小到最大排序 - 我们计算的顺序。 –

排序是一个内置的函数,它可迭代像列表(阵列)或词典或任何其它这样的类型,并返回一个列表(阵列)作为输出。 (这里指:Builtin Function - sorted()

无法排序字典本身和它本身存储为字典是无序的(这不记得它的键的顺序)

为了存储字典,沿其为了使用ordereddict数据类型的蟒蛇。(参见这里Ordereddict

对于排序有序字典你参考这个* question

(有关排序的字典参考this question的更多信息。)