Pythonic方式设置排序顺序?

时间:2011-08-09 16:45:56

标签: python

我有一个关于对象的集合,我需要分配一个随机顺序。我写了一个非常愚蠢的java风格循环来做到这一点,但是实现同样的更好的pythonic方法是什么?

from random import shuffle

class pair(object):
    def __init__(self, name):
        self.name = name
        self.order = 0
    def __repr__(self):
        return self.name + " order: " + str(self.order)

test =[pair('a'),pair('b'),pair('c'),pair('d')]
print(test)
#shuffle the list
shuffle(test)
i = 1
#this is what i want to replace <------
for t in test:
    t.order=i
    i+=1

print(test)

示例输出:

>>>[a order: 0, b order: 0, c order: 0, d order: 0]
>>>[c order: 1, a order: 2, d order: 3, b order: 4]

2 个答案:

答案 0 :(得分:6)

这并不比你的简单得多,但它可能有点整洁:

for i, t in enumerate(test):
    t.order = i

答案 1 :(得分:0)

[ x.order = o for o, x in enumerate(test) ]