如何使用枚举在python中对字典进行排序?

时间:2018-11-11 16:34:06

标签: python dictionary enumerate sorteddictionary

我有以下代码

for index,(key,value) in enumerate(dict_var.items()):
    sorted_dict[index] = (key, value)

print("The sorted list is:{}".format(sorted_dict))

其中

  • dict_var 是字典。
  • sorted_dict 是一个列表,用于按排序顺序存储dict_var的键和值。

有人可以解释为什么此代码不起作用吗?

我收到此错误:

  

sorted_dict [index] =(键,值)
  IndexError:列表分配索引超出范围

2 个答案:

答案 0 :(得分:1)

sorted_dict = [] 
sorted_dict[0] = 1 #IndexError: list assignment index out of range

该索引专门用于访问python列表中的现有位置,并且不会默默地创建该列表以适应超出范围的索引。这个问题与枚举无关。

您可以简单地使用列表的.append()在末尾添加项目。 示例:

sorted_dict = []
for key,value in dict_var.items():
    sorted_dict.append((key, value))

print("The sorted list is:{}".format(sorted_dict))

答案 1 :(得分:0)

由于dict_var的len大于sorted_dict的len,因此出现索引错误。为避免此错误,请确保列表的大小大于或等于sorted_dict的len。如果您可以在运行代码之前向我们展示sorted_dict的外观,那也将有所帮助。另外,命名列表sorted_dict可能不是一个好主意。 sorted_list会更好。您还可以通过以下方式避免此错误:

for key, value in dict_var.items():
    sorted_dict.append((key, value))