Python将列表转换为具有键值的Dictionary

时间:2015-03-11 13:09:23

标签: python

我通过PySolr从SOLR获得json响应,一切正常,只是Facet字段的格式不一致,下面是facet字段

LocalityId = [ "14008",1,"14293",4,]

现在我需要将上面的列表转换为键值对(Dictionary),同样

LocalityId = {"14008":"1", "14293":"4"}

如何使用python实现这一目标?

编辑:是的我知道它不是标准列表格式,但我没有创建它,责备solr

编辑:为什么-1,stackoverflow已成为复仇和随机爆发的地方!告诉我这里的民间我错了吗?

3 个答案:

答案 0 :(得分:7)

使用slicingzip您可以创建一个dict,假设您的列表名为l

dict(zip(l[::2], l[1::2]))

l[::2]将从索引0开始获取列表的每个第2个元素,同样l[1::2]从索引1开始获取每个第2个元素。

l = ["14008", 1, "14293", 4]
l[::2] # ['14008', '14293']
l[1::2] # [1, 4]

这两个列表然后zip一起创建dict。

编辑正如评论中所建议的那样,键也应该是字符串,因此我们可以使用map来转换它们。代码将变为:

dict(zip(l[::2], map(str, l[1::2])))

答案 1 :(得分:2)

您可以使用zipdict将您的列表转换为预期字典:

>>> l=[ "14008",1,"14293",4,]
>>> dict(zip(l[::2],l[1::2]))
{'14008': 1, '14293': 4}

答案 2 :(得分:1)

另一种方法是使用dict理解。

l = ["14008", 1, "14293", 4]
{l[i*2]: l[i*2+1] for i in range(int(len(l)/2))}