【发布时间】:2014-08-02 20:53:38
【问题描述】:
假设我有
a = [['a1', 'b1'], ['a1', 'b2'], ['a2', 'b1'], ['a2', 'b4']]
结果我想要
a = [[0, 2], [0, 3], [1, 2], [1, 4]]
为每个子列表的第一项(即a[:][0])提供一个ID,然后继续每个子列表的第二项(即a[:][1])
我试过了:
>>> aa=[[] for cells in range(len(a))]
>>> for i in range(len(a)):
for j in range(len(a[i])):
aa[i].append(id(a[i][j]))
结果:
>>> aa
[[34378168, 51409056], [34378168, 51507304], [34301464, 51409056], [34301464, 51467576]]
这是“关闭”,但我希望 id 从 0 开始并继续。
我知道 id() 返回什么,我不需要。
【问题讨论】:
-
不知道为什么这被否决了。 OP 有输入、预期输出、对所需内容的合理清晰描述以及解决它的尝试。
-
@MartijnPieters 我没有投反对票,但我仍然没有得到 OP 想要的东西。
-
@miindlek:他们想为每个字符串值生成一个唯一的数字。
a1赋值为 0,a2赋值为 1。这就是赋值的所有第一列值。然后继续计算唯一的第二列值:b1得到 2,b2得到 3,b4得到 4。如果有更多唯一值,则分配更多数字。 -
@miindlek: 所以
[['foo', 'bar'], ['spam', 'ham'], ['foo', 'baz'], ['spam', 'bar']]会产生[[0, 2], [1, 3], [0, 4], [1, 2]]。 -
新来@MartijnPieters,你很有帮助。
标签: python list python-3.x uniqueidentifier