我有四个类似这样的列表:
lista = [['l', 'k'],['e', '3'],['c', 'k'],['x', 'i'],['d', 'f']]
listanum = [1,2,3,4,5]
listb = [['a', 'k'],['c', 'm'],['v', 'f']]
listbnum = [1,3,4]
lista
和listanum
是同步的,listb
和listbnum
也是如此。
我想创建一个字典,其中键是listanum
中的项目,而值是lista
和listb
中的项目,结果将会是:
di = {1: [['l','k'],['a', 'k']],
2: [['e', '3'],[]],
3:[['c','k'],['c', 'm']],
4: [['x', 'i'],['v', 'f']],
5: [['d', 'f'][]]
}
所以如果在listb中没有listanum中数字的值,那么字典中第二个列表的值为空。
我尝试过这样做:
di = {}
for i in xrange(len(lista)):
pos = listanum[i]
if pos not in di:
di[pos] = [[],[]]
di[pos][0].append(lista[i])
if i in listbnum:
di[pos][1].append(listb[i])
但是我收到了这个错误信息:'IndexError: list index out of range'
。我看不出为什么它超出了范围???
da.keys() | db.keys()
(或在2.7中使用da.viewkeys() | db.viewkeys()
)替换set(listanum + listbnum)
。 - Gareth Lattydict.viewkeys()
转换为dict.keys()
,但这并不是什么大问题,两者都很易读。 - Gareth Latty