根据列表或优先级键检索字典项

时间:2016-08-03 18:55:09

标签: python python-2.7 python-3.x

我想根据优先键列表检索字典键。 字典看起来像:

My_dic = {'name': 'John', 'age': '33', 'gender':'male', 'car': 'SUV'}

标准清单是:

My_criteria = ['gender', 'age', 'car', 'name']

如何以pythonic方式完成?

4 个答案:

答案 0 :(得分:1)

您可以按照指定的顺序检索元素

for k in sorted(My_dic, key=My_criteria.index):
    print(k,":",My_dic.get(k))

答案 1 :(得分:1)

您可以使用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'])。

答案 2 :(得分:0)

由于信息的存储方式(http://www.python-course.eu/dictionaries.php),词典不可排序。

您可以使用列表推导创建新的元组值列表,例如:

<!DOCTYPE html> <html> <body bgcolor="#999966"> <select id="myFruitSelect"> <option value="0"> Please Choose a Fruit </option> <option value="1"> Apple</option> <option value="2">Orange</option> <option value="3">Pineapple</option> <option value="4">Banana</option> <option value="5"> Watermelon </option> </select> </form> <br> <button onclick="myFunction()"> Select Your Fruit</button> <img id="outputImage" src=""/> <script> function myFunction() { var pictures= [ "apple.png", "orange.png", "pineapple.png", "banana.png", "Watermelon.png"]; var x = document.getElementById("myFruitSelect").value; document.getElementById('outputImage').src = pictures[parseInt(x, 10)-1]; } </script> </body> </html>

答案 3 :(得分:0)

只需遍历优先键,而不是你的dict,然后使用这些键获取值:

for key in My_criteria:
    print My_dic[key]

将按照My_criteria所在的顺序打印您的密钥值。