0
我建立了一个OrderedDict
和执行字典内涵不同的语法,我已经简化为一个功能dictcomp(fn, dictionary, key_or_value):
:OrderedDict更改阶双重迭代循环
在这一点上我可以排序的词典:
x = self.dictcomp(self.sort_by_hue, x, 'v')
一切似乎退房至今:
print x
现在,我需要重新命名键,所以我将创建一个新的有序字典:
color_indexes = list(xrange(0, len(x.keys())))
print color_indexes
newkeys = [self.rename(color_index) for color_index in color_indexes]
print x.values()
vi = iter(x.values())
x = OrderedDict.fromkeys(newkeys);
我不知道如何填写立即旧的价值观,所以我这样做:
ki = iter(x.keys())
for k, v in zip(ki, vi):
#print "k:", k
print v
x[k] = tuple(v)
检查了罚款:
print x.items()
这里麻烦来了:
x = self.dictcomp(hsv_to_rgb, x, 'v_tuple')
print x.items()
其中dictcomp做到这一点:
dictionary = {k: fn(*v) for k, v in dictionary.items()}
其中fn=hsv_to_rgb
,dictionary=x
现在,我有:
[('Blue', (0.9764705882352941, 0.5529411764705883, 0.0)), ....
,而不是预期:
[('Red', (0.4745098039215686, 0.7372549019607844, 0.23137254901960794)), ....
的关键是一样,但价值已经改变。我猜测插入顺序受到某种程度的影响。这是怎么发生的?我怎样才能保持字典中键的顺序?