改变的关键排序的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,一个以该顺序进行迭代。
有没有简单的方法来做到这一点?
答
你忘记了一个关于python字典的小而重要的观点。他们不能被分类!
你在代码中实际做的是排序字典值。要使字典显示为已排序,您需要创建一个由字典键组成的排序列表。
keys = sorted(dictionary, key=lambda x: (dictionary[x][3],x))
for k in keys:
print (k, dictionary[k])
答
排序是一个内置的函数,它可迭代像列表(阵列)或词典或任何其它这样的类型,并返回一个列表(阵列)作为输出。 (这里指:Builtin Function - sorted()
无法排序字典本身和它本身存储为字典是无序的(这不记得它的键的顺序)
为了存储字典,沿其为了使用ordereddict数据类型的蟒蛇。(参见这里Ordereddict)
对于排序有序字典你参考这个* question。
(有关排序的字典参考this question的更多信息。)
这不是真正的代码。 Python中没有'TRUE'。你正在用'4'进行搜索,但是列表索引从Python中的'0'开始,所以你的列表中没有'4'的元素。字典定义将是无效的,因为'a','b'是未定义的。 – e4c5
你想要做什么? – Rosh
@ e4c5嗯,我很抱歉,我在*有点新,并且正在复制另一台计算机的代码。至于字典,它只是一个例子,假设字典['a']返回[1,2,3,4]等等。 – nimbyest