jon*_*ham 8 python sorting dictionary associative-array
我试图用Python打印出一本字典:
Dictionary = {"Forename":"Paul","Surname":"Dinh"}
for Key,Value in Dictionary.iteritems():
print Key,"=",Value
Run Code Online (Sandbox Code Playgroud)
尽管首先列出了"Forename"项,但Python中的字典似乎按值排序,因此结果如下:
Surname = Dinh
Forename = Paul
Run Code Online (Sandbox Code Playgroud)
如何在代码中输入相同的顺序或在附加项目时的顺序(不按值或按键排序)?
Joh*_*erg 16
您可以使用元组列表(或列表列表).像这样:
Arr= [("Forename","Paul"),("Surname","Dinh")]
for Key,Value in Arr:
print Key,"=",Value
Forename = Paul
Surname = Dinh
Run Code Online (Sandbox Code Playgroud)
你可以用以下方法制作一本字典:
Dictionary=dict(Arr)
Run Code Online (Sandbox Code Playgroud)
正确排序的键如下:
keys = [k for k,v in Arr]
Run Code Online (Sandbox Code Playgroud)
然后这样做:
for k in keys: print k,Dictionary[k]
Run Code Online (Sandbox Code Playgroud)
但我同意你对你的问题的评论:在循环时,按所需顺序排序键是不是很容易?
编辑:(谢谢Rik Poggi),OrderedDict为您做到这一点:
od=collections.OrderedDict(Arr)
for k in od: print k,od[k]
Run Code Online (Sandbox Code Playgroud)
lig*_*lig 16
首先,词典根本不是按键分类,也不是按值分类.
并根据您的描述.你实际上需要collections.OrderedDict模块
from collections import OrderedDict
my_dict = OrderedDict([("Forename", "Paul"), ("Surname", "Dinh")])
for key, value in my_dict.iteritems():
print '%s = %s' % (key, value)
Run Code Online (Sandbox Code Playgroud)
请注意,您需要OrderedDict从不是来自另一个dict的元组列表中实例化,因为dict实例将在OrderedDict实例化之前对项的顺序进行洗牌.
这可能会更好地满足您的需求:
Dictionary = {"Forename":"Paul","Surname":"Dinh"}
KeyList = ["Forename", "Surname"]
for Key in KeyList:
print Key,"=",Dictionary[Key]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38646 次 |
| 最近记录: |