我从一个像这样的简单 python 字典开始:-
In [29]: date_dict
Out[29]:
{'2003-06-24': 2,
'2003-08-13': 1,
'2003-08-19': 2,
'2003-08-22': 1,
'2003-08-24': 5}
键是日期,值是整数。
我的目标是将这个字典中的数据重组为:-
{'datetime': ['2003-08-13',
'2003-08-19',
'2003-06-24',
'2003-08-24',
'2003-08-22'],
'observations': [1, 2, 2, 5, 1]}
维护datetime键持有的列表和observations键持有的列表之间的数据关系。
这是我完成此任务的解决方案:-
In [35]: new_dict
Out[35]: {'datetime': [], 'observations': []}
In [36]: for key, value in date_dict.iteritems():
....: new_dict['datetime'].append(key)
....: new_dict['observations'].append(value)
In [37]: new_dict
Out[37]:
{'datetime': ['2003-08-13',
'2003-08-19',
'2003-06-24',
'2003-08-24',
'2003-08-22'],
'observations': [1, 2, 2, 5, 1]}
我的问题是 - 是否有替代方法(更好,如果更有效)执行此操作?
(请注意,保持两个列表之间的数据关系至关重要,即在原始 date_dict 中,“2003-08-24”对应值“5”。数据重组后,第 3 个索引“日期时间”列表是“2003-08-24”,它与“观察列表”的第三个索引正确对应为“5”。)
请您参考如下方法:
也许:
new_dict = {'datetime': date_dict.keys(), 'observations': date_dict.values()}
如果您需要订购,请尝试使用 OrderedDict而不是听写:
Return an instance of a dict subclass, supporting the usual dict methods. An OrderedDict is a dict that remembers the order that keys were first inserted. If a new entry overwrites an existing entry, the original insertion position is left unchanged. Deleting an entry and reinserting it will move it to the end.
