Skip to main content
 首页 » 编程设计

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

2025年05月04日12mq0036

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

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

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

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

如何用 python 实现这个?

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

编辑:为什么-1,stackoverflow成了报复和随机爆发的地方!伙计们,告诉我哪里错了??

请您参考如下方法:

假设您的原始列表名为 fields :

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

一步一步: 来自原始列表 fields我们希望偶数索引处的项目是键,奇数索引处的项目是值。

我们将使用 Python 的扩展索引(实际上是引擎盖下的 slice 内置)来获取所有偶数和奇数索引项:

>>> list(range(10)[::2]) 
[0, 2, 4, 6, 8] 
>>> list(range(10)[1::2]) 
[1, 3, 5, 7, 9] 

偶数项是从索引 0 开始获得的(省略,因为它是默认值)直到最后一个元素(也省略),我们将使用 2 的步骤.对于奇数项目,我们做同样的事情,但从索引 1 开始。 .

如果我们 zip这两个列表一起我们得到一个列表 (key, value)我们可以将返回值传递给 dict constructor .

现在我们只需要使值str s 来匹配所需的输出,为此我们将使用 map :

>>> even_items = fields[::2] 
>>> odd_items = fields[1::2] 
>>> key_value_pairs = zip(even_items, odd_items) 
>>> dict(key_value_pairs) 
{'14008': 1, '14293': 4} 

或者在一行中:

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