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())