Python 对字典中元组中的第一个值(最新日期时间项)进行排序
我正在尝试根据最新的日期时间条目显示词典。“我的日期时间”位于一个元组中,该元组存储在一个键上,它是元组中的第一个值。 ***此词典从文本文件读取内容,因此my dictionary={}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
{'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={}你知道怎么做吗?:)