我有以下代码:
names = ['a', 'e', 'c', 'd', 'b']
stuff = [['a', 1], ['a', 2], ['b', 5], ['c', 4], ['c', 2], ['d', 10], ['e', 22], ['e', 13]]
x = [[0] * len(stuff)] * len(names)
counters = [0]*len(names)
for s in stuff:
i = names.index(s[0])
x[i][counters[i]] = s
counters[i] += 1
for i in range(len(names)):
if 0 in x[i]:
x[i] = x[i][:x[i].index(0)]
print x
我想要的是以下输出:
[[['a', 1], ['a', 2]], [['e', 22], ['e', 13]], [['c', 4], ['c', 2]], [['d', 10]], [['b', 5]]]
基本上,我想创建一个包含子列表子列表的新列表,其中最低级别的子列表的第0个条目始终相同(对不起,我不知道如何以更好的方式使用它)。我想从' stuff'中的子列表创建这个新列表。使用' name'的元素。运行我的代码时得到的是:
[[['e', 22], ['e', 13]], [['e', 22], ['e', 13]], [['e', 22], ['e', 13]], [['e', 22], ['e', 13]], [['e', 22], ['e', 13]]]
我的问题是:为什么我的代码会生成此输出而不是我想要的?我很确定行中出现问题
x[i][counters[i]] = s
但是,我不知道为什么这样的任何帮助真的值得赞赏...