给出以下字典:
d={98558: [283L, 211L, 44L, 0L],
98559: [283L, 212L, 44L, 1L],
98560: [283L, 213L, 44L, 2L]}
我想使用dict理解摆脱L
符号。我的两个解决方案不起作用:
dmap={k: map(int, v[i]) for v in d.values() for i in v}
dmap={k: int(v[i]) for v in d.values() for i in v}
他们都返回:IndexError: list index out of range
,说i=7L
。我做错了什么?
答案 0 :(得分:1)
问题在于,在您的理解中,i
是v
的元素,即使v[i]
成功, v[i]
也是一个数字,而不是列表< / strong>,因此您的第一个查询无法执行map
。此外,k
未定义(它源自何处?)。
在第二个查询中,您将int
与密钥相关联,但无论如何都未定义k
。
你可以轻松解决它:
dmap = { k: map(int,v) for k,v in d.iteritems() }
或者您可以自己编写列表理解,例如:
dmap = { k: [int(vi) for vi in v] for k,v in d.iteritems() }