我有以下字典我想按元组中的日期对象对它进行排序
final_dict={'102 Not Out': "('75', '2018-05-04 00:00:00'),N/A",
'2.0': "('84', '2019-01-01 00:00:00'),8.5",
'3 Dev': "('0', '2018-05-11 00:00:00'),No IMDB Info Available",
'Adityam': "('34', '2018-04-27 00:00:00'),No IMDB Info Available",
'Ajay Devgn – Luv Ranjan’s Next': "('63', '2018-10-19 00:00:00'),No IMDB Info Available",
'Arjun Patiala': "('0', '2018-09-13 00:00:00'),No IMDB Info Available",
'Baazaar': "('60', '2018-05-01 00:00:00'),N/A"}
我有以下代码,但它不起作用 - 它只按键对字典进行排序,
OrderedDict(sorted(final_dict.items(), key=lambda t: t[0]))
OR
sorted(final_dict.items(),key=lambda x: x[1][2])
寻找以下输出:
{'Adityam': "('34', '2018-04-27 00:00:00'),No IMDB Info Available",
'Baazaar': "('60', '2018-05-01 00:00:00'),N/A",
'102 Not Out': "('75', '2018-05-04 00:00:00'),N/A",
'3 Dev': "('0', '2018-05-11 00:00:00'),No IMDB Info Available",
'Arjun Patiala': "('0', '2018-09-13 00:00:00'),No IMDB Info Available",
'Ajay Devgn – Luv Ranjan’s Next': "('63', '2018-10-19 00:00:00'),No IMDB Info Available",
'2.0': "('84', '2019-01-01 00:00:00'),8.5",
}
有人可以帮忙吗?
请您参考如下方法:
这是使用 collections.OrderedDict 和 ast.literal_eval 的一种方式。
如前所述,如果可能的话,最好在数据到达字典之前解决这些问题。
from collections import OrderedDict
from ast import literal_eval
res = OrderedDict(sorted(final_dict.items(),
key=lambda x: literal_eval(x[1].split('),')[0]+')')[1]))
结果:
OrderedDict([('Adityam', "('34', '2018-04-27 00:00:00'),No IMDB Info Available"),
('Baazaar', "('60', '2018-05-01 00:00:00'),N/A"),
('102 Not Out', "('75', '2018-05-04 00:00:00'),N/A"),
('3 Dev', "('0', '2018-05-11 00:00:00'),No IMDB Info Available"),
('Arjun Patiala', "('0', '2018-09-13 00:00:00'),No IMDB Info Available"),
('Ajay Devgn – Luv Ranjan’s Next', "('63', '2018-10-19 00:00:00'),No IMDB Info Available"),
('2.0', "('84', '2019-01-01 00:00:00'),8.5")])
