Python 对字典中元组中的第一个值(最新日期时间项)进行排序

Python 对字典中元组中的第一个值(最新日期时间项)进行排序,python,sorting,dictionary,tuples,Python,Sorting,Dictionary,Tuples,我正在尝试根据最新的日期时间条目显示词典。“我的日期时间”位于一个元组中,该元组存储在一个键上,它是元组中的第一个值。 ***此词典从文本文件读取内容,因此my dictionary={} {'xavier': ('2020-08-13 13:34:01', 'running'), 'alvin': ('2020-08-14 14:34:10', 'basketball')} 任何人都知道如何显示“alvin”下的键和值,因为日期时间条目是最新的。大概是这样的: alvin ('2020-08

我正在尝试根据最新的日期时间条目显示词典。“我的日期时间”位于一个元组中,该元组存储在一个键上,它是元组中的第一个值。 ***此词典从文本文件读取内容,因此my dictionary={}

{'xavier': ('2020-08-13 13:34:01', 'running'), 'alvin': ('2020-08-14 14:34:10', 'basketball')}
任何人都知道如何显示“alvin”下的键和值,因为日期时间条目是最新的。大概是这样的:

alvin ('2020-08-14 14:34:10', 'basketball')
xavier ('2020-08-13 14:34:01', 'running')

多谢

排序
将是一种选择

from datetime import datetime

your_dict = {'xavier': ('2020-08-13 13:34:01', 'running'), 'alvin': ('2020-08-14 14:34:10', 'basketball')}
for k, v in sorted(your_dict.items(), key=lambda item: datetime.strptime(item[1][0], "%Y-%m-%d %H:%M:%S"), reverse=True):
    print(k, v)

你可以用

from datetime import datetime

dct = {'xavier': ('2020-08-13 13:34:01', 'running'), 'alvin': ('2020-08-14 14:34:10', 'basketball')}


def sorter(item):
    """ Returns a datetime object """
    return datetime.strptime(item[1][0], '%Y-%m-%d %H:%M:%S')

print(sorted(dct.items(), key=sorter, reverse=True))

您可以做的是,处理一个类似于
列表的结构,从
dict.items()
中获取该结构,并借助
sorted()
函数对其进行排序

例如:

d = {
    'xavier': ('2020-08-13 13:34:01', 'running'), 
    'alvin': ('2020-08-14 14:34:10', 'basketball'),
    'peter': ('2020-08-19 16:42:00', 'tennis')
}

sd = sorted(d.items(), key=lambda x: x[1][0], reverse=True)

for item in sd:
    print(item)
# ('peter', ('2020-08-19 16:42:00', 'tennis'))
# ('alvin', ('2020-08-14 14:34:10', 'basketball'))
# ('xavier', ('2020-08-13 13:34:01', 'running'))

说明:

  • 参数用于检索要在其上运行比较的对象,即示例将处理日期字符串
  • 即使您只提供字符串,排序也可以工作,因为它的格式正确,如果您使用其他表单,例如
    14.08.2020
    ,排序可能无法正常工作。然后可以使用
    datetime

    • 您可能会发现这很有用

      import json
      
      file_data = ''
      filepath = 'filepath' #your filepath
      with open(filepath, 'r', encoding='utf-8') as f:
          file_data = f.read()
      my_dictionary = json.loads(file_data) #string file data converted to dictionary in Python
      
      new_sorted_data = sorted(my_dictionary.items(), key=lambda x:x[1][0], reverse=True)
      for i in new_sorted_data:
          print(i[0], i[1])
      
      

      Python3.5(6?
      开始,它们实际上有一个顺序。看,它是3.6OK,但它们没有根据其内容的任何标准进行排序。它们是根据所做的插入来订购的。无论如何,谢谢你。很高兴知道。好吧,如果你使用基于某些标准的理解,那么这就是插入的方式。含义:
      dct={key:value for key,value in sorted(dct.items(),key=lambda x:x[1])}
      实际上将遵循一条规则。感谢您的输入!很抱歉,我没有将此添加到词典中,但我的词典实际上从文本文件中读取内容。所以我的dict={}你知道怎么做吗?:)嗨,简!很抱歉,我没有将此添加到词典中,但我的词典实际上从文本文件中读取内容。所以我的dict={}你知道怎么做吗?:)