在dict理解中摆脱L符号(长数据类型)

时间:2017-03-17 15:10:18

标签: python python-2.7 dictionary long-integer type-conversion

给出以下字典:

d={98558: [283L, 211L, 44L, 0L],
   98559: [283L, 212L, 44L, 1L],
   98560: [283L, 213L, 44L, 2L]}

我想使用dict理解摆脱L符号。我的两个解决方案不起作用:

  1. dmap={k: map(int, v[i]) for v in d.values() for i in v}
  2. dmap={k: int(v[i]) for v in d.values() for i in v}
  3. 他们都返回:IndexError: list index out of range,说i=7L。我做错了什么?

1 个答案:

答案 0 :(得分:1)

问题在于,在您的理解中,iv的元素,即使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() }