我有以下列表:
[ 1, 2, 3, 4, 5, 6, 7, 8, 9]
我想根据这个列表中的id编号对元素进行分组:
[2, 1, 0, 0, 0, 1, 1, 2, 0]
所以我得到:
[[3, 4, 5, 9], [2, 6, 7], [1, 8]]
感谢
假设您的第一个列表是唯一的。您可以创建一个字典并根据关键字进行排序。如果您的python版本是2.*,则使用sorted(dictA.iteritems())
而不是sorted(dictA.items())
keys = [ 1, 2, 3, 4, 5, 6, 7, 8, 9]
values = [2, 1, 0, 0, 0, 1, 1, 2, 0]
dictA = dict(zip(keys, values))
res = {}
for key, value in sorted(dictA.items()):
res.setdefault(value, []).append(key)
print(res)
编辑1:对字典进行排序并获取字典值
import collections
od = collections.OrderedDict(sorted(res.items()))
list(od.values())
你必须在这里做些变通。希望这能有所帮助。
这会生成所需输出的列表
values = [1, 2, 3, 4, 5, 6, 7, 8, 9]
keys = [2, 1, 0, 0, 0, 1, 1, 2, 0]
nKeys = len(set(keys))
result = [ [] for i in range(nKeys)]
for kid, vid in zip(keys, values):
result[kid].append(vid)