我有一个字典,其中的键包含时间戳。基本上我想在那个时间戳上对字典进行排序;所以我可以获取与“第一个”时间戳对应的字典值。
我试过了:
router.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
console.log(req.headers.token);
});
但那打印
from __future__ import print_function
from collections import OrderedDict
from datetime import datetime
def _fetch_ts(name):
return datetime.strptime(name[-13:], '%Y%m%d_%H%M')
incoming_dict = {'20170410_1133': 'A', '20170412_1133': 'B'}
print("starting with: {}".format(incoming_dict))
sorted_dict = OrderedDict(sorted(incoming_dict, key=_fetch_ts))
print("gives : {}".format(incoming_dict))
print("should be A or B: {}".format(sorted_dict.values()[0]))
那我在这里做错了什么?
答案 0 :(得分:1)
你应该使用incoming_dict.items()来解压来自incoming_dict的值对。
_fetch_ts
如上所述,您还需要修改name[0][-13:]
,但您可以轻松引用{{1}}。
答案 1 :(得分:1)
您可以通过提前对其进行排序并将其重建为元组列表来重建OrderedDict。
像:
from __future__ import print_function
from collections import OrderedDict
from datetime import datetime
def _fetch_ts(name):
val = datetime.strptime(name[-13:], '%Y%m%d_%H%M')
return val
incoming_dict = {'20170410_1133': 'A', '20170412_1133': 'B'}
print("starting with: {}".format(incoming_dict))
print(sorted(incoming_dict, key=_fetch_ts))
sorted_dict = OrderedDict([(x,incoming_dict[x]) for x in sorted(incoming_dict, key=_fetch_ts)])
print("gives : {}".format(incoming_dict))
print("should be A or B: {}".format(sorted_dict.values()[0]))