关于排序:按字典python中的实际值排序

sort by actual values in a dictionary python

我在整理字典时遇到困难。我用下面的代码对它们进行排序

1
sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1))

但问题是排序不是由实际值完成的。

1
2
3
asdl 1
testin 42345
alpha 49

参考:用python对字典进行排序

我需要像下面这样分类的物品

1
2
3
asdl 1
alpha 49
testin 42345

  • 是听写列表吗
  • 您的密钥是字符串还是整数?
  • 'alpha':'49'、'asdl':'1'、'testin':'42345'是听写


您遇到的行为是由比较变量的类型决定的。为了解决这个问题,把它铸造到Integer上。

1
orted(x.iteritems(), key=lambda x: int(x[1]))

最终结果将是:

1
[('asdl', '1'), ('alpha', '49'), ('testin', '42345')]

  • 是的,这很管用。但是当我通过x.update(line.split()[0]:line.split()[1])更新dict时。默认情况下,它将把它作为字符串?
  • 是的,会的。因为您要拆分一个String,结果将是一个String。但是,如果您确定返回值始终是Integer,则可以通过调用int()将其强制转换为Integer