我有一个这样的元组元组:t = ((4, 3), (2, 9), (7, 2), ...)其中每个嵌套元组(即t[i][0])中的第一个元素可以在1到11之间不重复,但不一定会出现1到11之间的每个整数.
我想创建一个列表(或元组)r基础上t,以下列方式:
结果列表r的长度为11.对于每个索引j中r,如果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)
但是有没有更有效的方法(可能是一种功能方式)?
怎么样:
>>> 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)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |