首页 > 解决方案 > Python如何将这种类型的列表转换为字典

问题描述

[["4040", ["4040", "1.04862754", 4]], ["4040.1", ["4040.1", "0.25906621", 1]], ["4040.2", ["4040.2", "0.954", 1]]]

我想要的是:

{"4040": ["4040", "1.04862754", 4]}, {"4040.1": ["4040.1", "0.25906621", 1]}, {"4040.2": ["4040.2", "0.954", 1]}

我想以 json 格式将此数据发送到 redis,但在转换时遇到了困难。实际上我已经在字典中写入了这些数据,但是在发送到 redis 之前我需要对键进行排序,以便 python 将其转换为列表

标签: python

解决方案


使用切片:

print({x[0]: x[1:] for x in lst})

输出

{'4040': [['4040', '1.04862754', 4]], '4040.1': [['4040.1', '0.25906621', 1]], '4040.2': [['4040.2', '0.954', 1]]}

或者

print(dict(lst))

输出

{'4040': ['4040', '1.04862754', 4], '4040.1': ['4040.1', '0.25906621', 1], '4040.2': ['4040.2', '0.954', 1]}

或者

如果您想要分隔的字典列表:

print([{x[0]: x[1]} for x in lst]) 

输出

[
   {'4040': ['4040', '1.04862754', 4]}, {'4040.1': ['4040.1', '0.25906621', 1]}, {'4040.2': ['4040.2', '0.954', 1]}
]

或者

(通常事情很简单,但我们自己把它们复杂化)

print([{k:v} for k, v in lst])

输出

[
  {'4040': ['4040', '1.04862754', 4]}, {'4040.1': ['4040.1', '0.25906621', 1]}, {'4040.2': ['4040.2', '0.954', 1]}
]

推荐阅读