我有一个带有嵌套元组的字典列表,如下所示。
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)
但它没有通过。我当然错过了一些显而易见的东西,我提前道歉,但如果有人能提出解决方案,我将不胜感激。
假设s
是d
,则v
将是一个字典,因此表达式zip(v[::2], v[1::2])
将不起作用。字典不是序列,你不能像列表那样对它们进行切片。要获得dict
的(key, value)
对序列,只需执行v.items()
而不是zip
。