【发布时间】:2020-08-28 15:05:35
【问题描述】:
我有一个字典列表,格式为:
my_list = [{'a': 'Jane', 'b': 32}, {'a': 'Jack', 'b': 54}]
我想将这个重新排序到表单中:
new_dt = [{'b': 32, 'a': 'Jane'}, {'b': 54, 'a': 'Jack'}]
我使用了以下代码:
order_dict = ['b', 'a']
for dt in my_list:
for k in order_dict:
new_dt = my_list[k]
追溯
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-87-0d451ee34800> in <module>
3 for dt in my_list:
4 for k in order_dict:
----> 5 new_dt = my_list[k]
TypeError: list indices must be integers or slices, not str
【问题讨论】:
-
为什么?字典和集合是没有顺序的集合 - 从 3.7 开始的 python 使用输入顺序,但这是一个实现细节......
-
my_list是一个列表,k是一个字符串。在my_list[k]中,不能使用字符串作为列表索引。 -
@PatrickArtner 自 3.7 起成为规范的一部分
-
@SuperStormer - 那又怎样。这正是我所说的。但从计算机科学的角度来看,“顺序”与字典绝对无关——它们是一个 O(1) 访问键值存储,它是无序的。对它们进行排序是无关紧要的。如果您希望它们以某种排序顺序输出 - 只需这样做。
标签: python-3.x dictionary