如何根据字典键在文件中的出现对它们进行排序

我知道字典是一种无序数据类型,但可以使用该sorted()函数按字母顺序排序。但是,我想知道是否绝对不可能根据字典的键在文件中的出现对它们进行排序。例如,我想从 txt 文件中提取水果名称并将它们映射到行号和时间戳。生成的字典如下所示:


mydict = {

    'orange': [['1', '00:00:03,950'],  # 'fruit': [['line number', 'timestamp']]

         ['9', '00:00:24,030'], 

         ['11', '00:00:29,640']],  

    'cherry': [['20', '00:00:54,449']],  

    'apple': [['14', '00:00:38,629']], 

    'banana': [['2', '00:00:06,840'],  

          ['3', '00:00:09,180'], 

          ['4', '00:00:10,830']],

}

现在,我想根据键在文件中的出现对它们进行排序,即按它们作为值的第一个列表项的行号升序。


所以期望的输出是:


{'orange': [['1', '00:00:03,950'],

         ['9', '00:00:24,030'], 

         ['11', '00:00:29,640']], 

 'banana': [['2', '00:00:06,840'],  # changed

          ['3', '00:00:09,180'], 

          ['4', '00:00:10,830']]} 

 'apple': [['14', '00:00:38,629']],

 'cherry': [['20', '00:00:54,449']]}  # changed

如果您认为这是一个愚蠢的问题,因为由于字典的无序性质,这是不可能的,您可以对此发表评论,然后我将删除这个问题。不过,我很感谢您的帮助和澄清。


凤凰求蛊
浏览 103回答 1
1回答

临摹微笑

如果你想对与每个水果相关的排序list,你可以执行以下操作:>>> mydict = {k : sorted(v, key=lambda x : int(x[0])) for k, v in mydict.items()}>>> mydict{'orange': [['1', '00:00:03,950'],            ['9', '00:00:24,030'],            ['11', '00:00:29,640']], 'cherry': [['20', '00:00:54,449']], 'apple': [['14', '00:00:38,629']], 'banana': [['2', '00:00:06,840'],            ['3', '00:00:09,180'],            ['4', '00:00:10,830']]}这是迭代字典的键值对,并按每个值的int第一个元素对每个值的元素进行排序。但要明确的是,从 Python 3.7 开始,法线dict是有序的。所以在这里,您会看到水果名称的出现顺序与它们创建时的顺序相同 - 在早期的 Python 中,情况并非如此。您还说您想要对键(水果名称)进行排序,但看起来您想要对值(行号和时间戳)进行排序。如果您想对水果名称进行额外排序,您可以拨打sorted电话来获取项目:>>> mydict = {k : sorted(v, key=lambda x : int(x[0])) for k, v in sorted(mydict.items())}>>> mydict{'apple': [['14', '00:00:38,629']], 'banana': [['2', '00:00:06,840'],            ['3', '00:00:09,180'],            ['4', '00:00:10,830']], 'cherry': [['20', '00:00:54,449']], 'orange': [['1', '00:00:03,950'],            ['9', '00:00:24,030'],            ['11', '00:00:29,640']]}# now mydict's keys are in alphabetical order, and its values are also ordered by line number
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python