为了账号安全,请及时绑定邮箱和手机立即绑定

如何按字典值的一部分对字典进行排序?

如何按字典值的一部分对字典进行排序?

烙印99 2023-07-05 16:27:22
我有一个具有以下格式的 .txt 文件:Name A2019-02-04 15:29:10First Line of infoSecond line of infoThird line of infoName B2019-01-04 12:21:10First Line of infoSecond line of infoThird line of info我已使用以下代码将此文件转换为字典,第一行是键,其余值作为列表:import itertools as itdict = {}with open('filenamehere') as f:    while True:        try:            p = next(f).rstrip()            dict[p] = list(l.rstrip() for l in it.takewhile(lambda line: line != '\n', f))                    except StopIteration:            break这将创建一个字典,{'Name A': ['2019-02-04 15:29:10','First line of info','Second line of info','third line of info']等等。然后,我能够按字母顺序对这本词典进行排序,并以与原始文本文件类似的格式显示它:sorted_dict= {}sorted_keys = sorted(dict.keys(), key=lambda x:x.lower())for key in sorted_keys:        sorted_dict.update({key: dict[key]})        for name, details in list(sorted_dict.items()):    print(f"{name}\n" + '\n'.join(details), "\n")现在我的问题是如何按最新时间戳对该字典进行排序,然后以与原始文本文件类似的格式打印它?
查看完整描述

2 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

sorted_dict = {}

for key, value in sorted(original_dict.items(), key=lambda x:x[1][0], reverse=True):

        sorted_dict[key] = value

其中x[1][0]代表字典值的第一项,我相信这是您想要对字典进行排序的内容。反向参数是可选的,如果未提供,则默认为 False。


查看完整回答
反对 回复 2023-07-05
?
三国纷争

TA贡献1804条经验 获得超7个赞

基于Python:对列表字典进行排序,您首先需要将时间戳从字符串转换为时间对象,然后比较它们。

datetime.datetime.strptime()可以做的工作:将字符串按特定格式转换为Time 对象。例如:

In [13]: a = datetime.datetime.strptime('2019-02-04 15:29:10', '%Y-%m-%d %H:%M:%S')

In [14]: b = datetime.datetime.strptime('2019-02-04 15:30:10', '%Y-%m-%d %H:%M:%S')

In [15]: b > a

Out[15]: True  

然后你可以用它作为你的键对你的字典进行排序,从我提到的答案中找到解决方案。只需作为函数执行dict()即可将结果转换为字典:


In [17]: dict(sorted(sorted_dict.items(), key=lambda x: datetime.datetime.strptime(x[1][0], '%Y-%m-%d %H:%M:%S')))

Out[17]:

{'Name B': ['2019-01-04 12:21:10',、

'First Line of info',

'Second line of info',

'Third line of info'],

'Name A': ['2019-02-04 15:29:10',

'First Line of info',

'Second line of info',

'Third line of info']} 


In [18]:


查看完整回答
反对 回复 2023-07-05
  • 2 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信