我创建了一个词典,后来我想将它的值插入列表中。我知道列表会保留他们的顺序,但我认为字典不是。我知道有OrderedDict,但据我所知,它保留了添加到字典中的顺序。在这里,我已经有了完整的字典,没有添加它。
我正在使用python 3.6
我的脚本是:
dirs_dictionary = {"user_dir_treatment":"/home/dataset_1/treatment",
"user_dir_control":"/home/dataset_1/control"}
empty_list = []
for key, value in dirs_dictionary.items()):
empty_list.append(dirs_dictionary[key])
所以最终,我希望列表将包含与字典中相同顺序的值,这意味着列表中的第一项是"/home/dataset_1/treatment"
,第二项是{ {1}}。
如何维护字典的顺序?
答案 0 :(得分:2)
在Python 3.6中,字典是在内部排序的,但这被认为是实现细节,不应该依赖它。
在Python 3.7中,字典是有序的。
因此,您有两个选择:
使用风险
的实施细节您可以使用list(d)
检索维护插入顺序的字典的键。
dirs_dictionary = {"user_dir_treatment":"/home/dataset_1/treatment",
"user_dir_control":"/home/dataset_1/control"}
empty_list = list(dirs_dictionary)
print(empty_list)
# ['user_dir_treatment', 'user_dir_control']
使用OrderedDict
from collections import OrderedDict
dirs_dictionary = OrderedDict([("user_dir_treatment", "/home/dataset_1/treatment"),
("user_dir_control", "/home/dataset_1/control")]
empty_list = list(dirs_dictionary)
print(empty_list)
# ['user_dir_treatment', 'user_dir_control']