假设我有一本这样的字典:
a = {1:"a", 3:"c", 5:"e", 4:"d" ,2:"b", 6:"f", 7:"g"}
我将其转换为元组列表:
b = list(a.items())
现在,我想根据元组的第一个值对列表进行排序。我有三种方法可以做到这一点:
from operator import itemgetter
b.sort(key=itemgetter(0))
b.sort(key=lambda x: x[::-1])
b = sorted(b, key=lambda t: (t[0]))
无论哪种情况,如果我打印,b我都会得到排序列表:
print(b)
>>> [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'), (6, 'f'), (7, 'g')]
然而,如果我实际b在一个进程中使用,结果发现它没有排序。我测试了一些东西,但我手头目前的东西是这样的:
batch_count = len(b) // 3
batches = [[] for _ in range(batch_count)]
for index, vec in enumerate(b):
batches[index % batch_count].append(vec)
这组b列表至少包含 3 个。batches但是,如果我打印,我会从 获得原始订单,但预期的情况a除外。7
print(batches)
>>> [[(1, 'a'), (3, 'c'), (5, 'e'), (7, 'g')], [(2, 'b'), (4, 'd'), (6, 'f')]]
有谁知道为什么以及如何防止这种情况?
Cats萌萌
犯罪嫌疑人X
红颜莎娜
相关分类