从元组元组中创建一个列表

sky*_*ork 3 python python-2.7

我有一个这样的元组元组:t = ((4, 3), (2, 9), (7, 2), ...)其中每个嵌套元组(即t[i][0])中的第一个元素可以在1到11之间不重复,但不一定会出现1到11之间的每个整数.

我想创建一个列表(或元组)r基础上t,以下列方式:

结果列表r的长度为11.对于每个索引jr,如果j + 1 === t[i][0]任何i,那么r[j] = t[i][1],否则r[j] = 0.

这可以通过初始化r[0] * 11first,然后循环t以分配t[i][1]r[t[i][0] - 1]:

t = ((4, 3), (2, 9), (7, 2), (10, 1))
r = [0] * 11
for item in t:
    r[item[0] - 1] = item[1]

r = [0, 9, 0, 3, 0, 0, 2, 0, 0, 1, 0]
Run Code Online (Sandbox Code Playgroud)

但是有没有更有效的方法(可能是一种功能方式)?

Jon*_*nts 6

怎么样:

>>> t
((4, 3), (2, 9), (7, 2), (10, 1))
>>> d = dict(t)
>>> [d.get(el, 0) for el in xrange(1, 12)]
[0, 9, 0, 3, 0, 0, 2, 0, 0, 1, 0]
Run Code Online (Sandbox Code Playgroud)