亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何根據字典鍵在文件中的出現對它們進行排序

如何根據字典鍵在文件中的出現對它們進行排序

鳳凰求蠱 2024-01-16 15:11:05
我知道字典是一種無序數據類型,但可以使用該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如果您認為這是一個愚蠢的問題,因為由于字典的無序性質,這是不可能的,您可以對此發表評論,然后我將刪除這個問題。不過,我很感謝您的幫助和澄清。
查看完整描述

1 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

如果你想對與每個水果相關的排序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



查看完整回答
反對 回復 2024-01-16
  • 1 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號