【发布时间】:2013-12-12 09:29:55
【问题描述】:
我有一个包含嵌套元组的字典列表,如下所示。
d = [
('sprayed', {'paint': (4.0, None), 'car': (5.0, None), 'water': (None, 9.0), 'hose': (7.0, 6.0)}),
('cherished', {'time': (None, 5.0), 'family': (4.0, None), 'gift': (None, 9.0)})
]
我想使用每个元组中的第一项按降序对其进行排序。结果应如下所示:
d2 = [
('sprayed', {'hose': (7.0, 6.0), 'car': (5.0, None), 'paint': (4.0, 9.0), 'water': (None, 9.0)}),
('cherished', {'family': (4.0, None), 'time': (None, 5.0), 'gift': (None, 9.0)})
]
我尝试使用:
s2 = []
for k, v in s:
new_list = sorted(zip(v[::2], v[1::2]), key=lambda x: float(x[1]), reverse=True)
但它没有通过。我当然在这里遗漏了一些明显的东西,我提前道歉,但如果有人能指出解决方案,我将不胜感激。
【问题讨论】:
-
字典不是排序实体。您可能正在寻找
collections.OrderedDict。 -
另外,在 Python 3 中,
None不可订购:3.0 < None=>TypeError: unorderable types: float() < NoneType() -
您的一个元组也发生了变化 -
'hose': (7.0, 6.0)变为'hose': (7.0, None)。这是错字还是部分逻辑? -
@LegoStormtroopr 我打错了,谢谢你发现它。
-
@Blckknght。谢谢,我会尝试用零替换
None!
标签: python sorting python-3.x dictionary tuples