【发布时间】:2019-09-28 01:46:03
【问题描述】:
我想按值从高到低排序字典。字典是这样的:
{'data1': {'/home/data1': 273}, 'data2': {'/home/data2': 2}, 'data3': {'/home/data3': 10}, 'data4': {'/home/data4': 1}}
我有一些代码可以在一个 VM 中运行,但是当我尝试在另一个 VM 中时不起作用。
dict = sorted(dicta.items(), key=lambda x: [int(x) for x in x[1].values()], reverse = True)
在一个虚拟机中我得到了这个错误,而在另一个虚拟机中它可以工作(使用 virtualenv 执行具有相同 python 版本的相同脚本等)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
有什么想法吗?
【问题讨论】:
-
@AmitGupta 不,我的问题是我的代码只能在一个 VM 中工作,而另一个不能。
-
相对于
dict = sorted(dicta.items(), key=lambda x: [int(x) for x in x[1].values()], reverse = True),不同的变量名会更好,因为dict也是一个函数名。参见例如dict([["A",1], ["B", 2]]) -
@sg.sysel 这不是真名,只是一个例子。
-
@hmar 你应该问正确的问题。问题不在于对字典进行排序,而是为什么您的 VM 会出错。你问的问题越具体,得到答案的机会就越大。并使用正确的标签。
标签: python python-3.5