Python 一种保证键/值列表从无序字典排序的方法?

Python 一种保证键/值列表从无序字典排序的方法?,python,dictionary,Python,Dictionary,我有一本字典,里面有一个标题和数据。有没有一种方法可以将这些数据分成两个列表,同时保持从字典中提取数据的顺序?我必须分别处理键列表和值列表,然后使用这些列表构建字符串 这很重要,因为我单独打印出来,输出必须匹配。列表是否与输入时的顺序不符并不重要。只要他们在列表中的位置匹配,就可以了 下面是一个非常简单的例子来说明这一情况: mydict = {'Hello':1, 'World':2, 'Again':3} keys = mydict.keys() values = mydict.values

我有一本字典,里面有一个标题和数据。有没有一种方法可以将这些数据分成两个列表,同时保持从字典中提取数据的顺序?我必须分别处理键列表和值列表,然后使用这些列表构建字符串

这很重要,因为我单独打印出来,输出必须匹配。列表是否与输入时的顺序不符并不重要。只要他们在列表中的位置匹配,就可以了

下面是一个非常简单的例子来说明这一情况:

mydict = {'Hello':1, 'World':2, 'Again':3}
keys = mydict.keys()
values = mydict.values()

print 'The list of keys are: %s' % stringify(keys)
print 'The corresponding values are: %s' % stringify(values)

# Output:
> The list of keys are: Hello, Again, World
> The corresponding values are: 1, 3, 2
我知道我可以构建一个有序的字典,然后获得键/值的有序将得到保证,但我也希望处理这种情况(非有序字典)


这样,
标题
可能以某种不可预测的顺序排列,但
所有数据
中的每个元素都将是属于
标题
中相应元素的数据,只需使用
,这将有效地为您提供一个压缩在一起的
值的副本:

items = mydict.items()

print 'The list of keys are: %s' % stringify([key for key, value in items])
print 'The list of values are: %s' % stringify([value for key, value in items])

即使您看到对的顺序是任意的,但是如果您不修改字典,则来自
keys()
values()
的输出将始终对齐。从:

如果项()、键()、值()、iteritems()、iterkeys()和 调用itervalues()时不会对 字典中,列表将直接对应。这允许 使用zip()创建(值、键)对:pairs=zip(d.values(), d、 keys())。对于iterkeys()和 itervalues()方法:pairs=zip(d.itervalues(),d.iterkeys()) 为数据对提供相同的值。创建相同列表的另一种方法 is pairs=[(v,k)表示d.iteritems()中的(k,v)]


只要不要改变
指令
,你就会没事的。否则,你所做的只是一个转折:

keys, values = zip(*mydict.items())

感觉比两个操作更“安全”…

我认为只有在Python 3中才能保证这一点。(In.)很高兴知道它在2.x中也是真实的!
keys, values = zip(*mydict.items())