我想根據優先鍵列表檢索字典鍵。 字典是這樣的:根據列表或優先鍵檢索字典項目
My_dic = {'name': 'John', 'age': '33', 'gender':'male', 'car': 'SUV'}
和標準清單是:
My_criteria = ['gender', 'age', 'car', 'name']
這怎麼能在Python化的方式進行?
我想根據優先鍵列表檢索字典鍵。 字典是這樣的:根據列表或優先鍵檢索字典項目
My_dic = {'name': 'John', 'age': '33', 'gender':'male', 'car': 'SUV'}
和標準清單是:
My_criteria = ['gender', 'age', 'car', 'name']
這怎麼能在Python化的方式進行?
您可以通過檢索順序元素指定
for k in sorted(My_dic, key=My_criteria.index):
print(k,":",My_dic.get(k))
我喜歡你的方法。 – Empario
Dictionary不排序,由於信息的存儲方式(http://www.python-course.eu/dictionaries.php)。
你可以使用列表理解,如創建元組值的新列表:
ordered_info = [(i,my_dic[i]) for i in my_criteria]
你可以使用一個OrderedDict:
from collections import OrderedDict
My_dic = {'name': 'John', 'age': '33', 'gender':'male', 'car': 'SUV'}
My_criteria = ['gender', 'age', 'car', 'name']
My_dic = OrderedDict([(x, My_dic[x]) for x in My_criteria])
# OrderedDict([('gender', 'male'),
# ('age', '33'),
# ('car', 'SUV'),
# ('name', 'John')])
的好處是,你仍然可以訪問您數據就好像它是一本字典(例如My_dic['age']
)。
我喜歡你的方法。 – Empario
通過你的優先鍵只是重複,不是你的字典,然後使用這些密鑰得到的值:
for key in My_criteria:
print My_dic[key]
將打印的順序來My_criteria
是在你的關鍵字的值
Python字典不能排序。不過,可以對它們的*顯示進行排序。請參閱https://stackoverflow.com/questions/9001509/how-can-i-sort-a-dictionary-by-key –
我喜歡使用[operator module functions](https://docs.python.org/3 /howto/sorting.html#operator-module-functions)的關鍵功能。 – wwii
@傑弗裏:感謝您的快速回復。如果我使用OrderedDict,我將如何在我的列表中排序? – Empario