按时间顺序追加日期



这是 JSON:

[{'can_occur_before': False,
'categories': [{'id': 8, 'name': 'Airdrop'}],
'coins': [{'id': 'cashaa', 'name': 'Cashaa', 'symbol': 'CAS'}],
'created_date': '2018-05-26T03:34:05+01:00',
'date_event': '2018-06-05T00:00:00+01:00',
'title': 'Unsold Token Distribution',
'twitter_account': None,
'vote_count': 125},
{'can_occur_before': False,
'categories': [{'id': 4, 'name': 'Exchange'}],
'coins': [{'id': 'tron', 'name': 'TRON', 'symbol': 'TRX'}],
'created_date': '2018-06-04T03:54:59+01:00',
'date_event': '2018-06-05T00:00:00+01:00',
'title': 'Indodax Listing',
'twitter_account': '@PutraDwiJuliyan',
'vote_count': 75},
{'can_occur_before': False,
'categories': [{'id': 5, 'name': 'Conference'}],
'coins': [{'id': 'modum', 'name': 'Modum', 'symbol': 'MOD'}],
'created_date': '2018-05-26T03:18:03+01:00',
'date_event': '2018-06-05T00:00:00+01:00',
'title': 'SAPPHIRE NOW',
'twitter_account': None,
'vote_count': 27},
{'can_occur_before': False,
'categories': [{'id': 4, 'name': 'Exchange'}],
'coins': [{'id': 'apr-coin', 'name': 'APR Coin', 'symbol': 'APR'}],
'created_date': '2018-05-29T17:45:16+01:00',
'date_event': '2018-06-05T00:00:00+01:00',
'title': 'TopBTC Listing',
'twitter_account': '@cryptoalarm',
'vote_count': 23}]

我想获取所有date_events并按时间顺序将它们附加到列表中。我目前有这段代码,不确定如何按时间顺序对它们进行排序。

date = []
for i in getevents:
date.append(i['date_event'][:10])

感谢您的任何帮助!

简单的方法是编写列表,然后应用sort()方法

data = json.load(open('filename.json','r'))
dates = [item['date_event'] for i in data]
dates.sort()

将示例数据与字段'creation_date'一起使用('date_event'值都相同(,我们将得到:

['2018-05-26T03:18:03+01:00',
'2018-05-26T03:34:05+01:00',
'2018-05-29T17:45:16+01:00',
'2018-06-04T03:54:59+01:00']

首先,对象数组中的所有date_event都是相同的,因此对它们进行排序没有多大意义。此外,您的方法不会让您走得更远,您需要将日期转换为本机日期/时间对象,以便您可以通过排序函数对它们进行排序。

解析正确格式化的日期/时间的最简单方法是使用dateutil.parse.parser,对现有列表进行排序由list.sort()完成 - 我做了一个关于如何使用这些工具的快速示例,还更改了date_event值来展示它:https://repl.it/repls/BogusSpecificRate

解码 JSON 字符串 (json.loads( 并有一个 Python 列表可以使用后,您可以继续对列表进行排序:

# Ascending
events.sort(key=lambda e: parser.parse(e['date_event']))
print([":".join([e['title'], e['date_event']]) for e in events])
# Descending
events.sort(key=lambda e: parser.parse(e['date_event']), reverse=True)
print([":".join([e['title'], e['date_event']]) for e in events])

最新更新