2017-09-21 74 views
-1

我有一本字典看起来像这样:排序元组基于时间价值

dict1 = {'key1': ['x1', [(time1,value1), (time3,value3), (time2,value2)]], 
     'key2': ['x2', [(time6,value6), (time4,value4), (time5,value5)]], 
      ...} 

对于字典中的每个关键,我想基于时间的元组进行排序。综观上述示例中,假设

time1 < time2 < time3 
time4 < time5 < time6 

祝输出然后

dict1 = {'key1': ['x1', [(time1,value1), (time2,value2), (time3,value3)]], 
     'key2': ['x2', [(time4,value4), (time5,value5), (time6,value6)]], 
      ...} 

用于每个键“X1”,“X2” ...等的第一个值是冗余的,并应(如果任何东西)只是被删除。

任何人都可以帮助我根据时间值排序字典中的元组的问题吗?

非常感谢。

回答

2

你可以只使用一个字典的理解与sorted:我使用的字符串,而不是

>>> {k: sorted(v[1]) for k, v in dict1.items()} 
{'key1': [('time1', 'value1'), ('time2', 'value2'), ('time3', 'value3')], 
'key2': [('time4', 'value4'), ('time5', 'value5'), ('time6', 'value6')]} 

>>> {k: [v[0]] + [sorted(v[1])] for k, v in dict1.items()} 
{'key1': ['x1', [('time1', 'value1'), ('time2', 'value2'), ('time3', 'value3')]], 
'key2': ['x2', [('time4', 'value4'), ('time5', 'value5'), ('time6', 'value6')]]} 

如果你要删除的x值,可以简化这个本这里的实际时间和值,但是如果这些时间对象正确比较,代码将会工作。使用sorted,元组列表将按照这些元组中的第一个元素进行排序(或在第一个元素相等的情况下排序)。

+0

我假设'timeX'这里指的是'datetime'对象。解决方案仍然保持这种简单? –

+0

@cᴏʟᴅsᴘᴇᴇᴅ上次我查了一下,'datetime'可以比较和排序就好了。 –

+0

因缺乏Python /编码技能而欢呼和感谢 –