在python中填充列表

我有一系列表示坐标的Python元组:

tuples = [(1,1), (0,1), (1,0), (0,0), (2,1)]

我想创建以下列表:

l = []
for t in tuples:
  l[ t[0] ][ t[1] ] = something

我得到一个IndexError:list index超出范围.

我的背景是PHP,我希望在Python中你可以创建以index>开头的列表. 0,即制作间隙,然后填补它们,但似乎你不能.

我们的想法是让列表在之后排序.我知道我可以用字典做到这一点,但据我所知,字典不能按键排序.
更新:我现在知道他们可以 – 看到公认的解决方案.

编辑:
我想要做的是创建一个2D数组,代表用元组坐标描述的矩阵,然后按顺序迭代它.
如果我使用字典,我不能保证按键顺序迭代 – > (0,0)(0,1)(0,2)(1,0)(1,1)(1,2)(2,0)(2,1)(2,2)

有人可以帮忙吗?

最佳答案
你究竟是什么意思“但据我所知,字典不能按键排序”?

虽然这与“排序字典”并不完全相同,但您可以轻松地将字典转换为按键排序的列表,这似乎是您所追求的:

>>> tuples = [(1,1), (0,1), (1,0), (0,0), (2,1)]
>>> l = {}
>>> for t in tuples:
...    l[t] = "something"
>>> sorted(l) # equivalent to sorted(l.keys())
[(0, 0), (0, 1), (1, 0), (1, 1), (2, 1)]
>>> sorted(l.items()) # make a list of (key, value) tuples, and sort by key
[((0, 0), 'something'), ((0, 1), 'something'), ((1, 0), 'something'), ((1, 1), 'something'), ((2, 1), 'something')]    

(我把一些东西变成字符串“东西”只是为了使代码工作)

然而,为了适应你的情况(如果我理解正确的话),你仍然需要为每个“空”坐标元组用无值或其他东西填充字典.

转载注明原文:在python中填充列表 - 代码日志