这是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])
感谢您的帮助!
答案 0 :(得分:0)
简单的方法是撰写一个列表,然后应用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']
答案 1 :(得分:-1)
首先,对象数组中的所有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])