Python如何将这种类型的列表转换为字典

2024-09-29 01:29:32 发布

您现在位置: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,但在转换时遇到了困难。实际上,我已经在dictionary中编写了这些数据,但在发送到redis之前,我需要对键进行排序,以便python将其转换为一个列表


Tags: 数据redisjson列表dictionary排序格式对键
3条回答

如果要将该列表转换为词典列表,列表理解就足够了:

>>> list_of_kv = [["4040", ["a", "b", 4]], ["4040.1", ["d", "e", 1]]]

>>> [{k: v} for k, v in list_of_kv]
[{'4040': ['a', 'b', 4]}, {'4040.1': ['d', 'e', 1]}]

如果您想要一个字典,则内置的dict类可以处理它:

>>> dict(list_of_kv)
{'4040': ['a', 'b', 4], '4040.1': ['d', 'e', 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(dict(lst))

输出

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

如果您想要一个单独的dict列表:

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]}
]

编辑:刚看到你想要三本字典,就相应地修改了代码。你知道吗

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

result = []

for elem in my_list:
    my_dict = {elem[0]: elem[1]}
    result.append(my_dict)

print(result)

输出:

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

或者,如评论中所指出的,使用list comprehension并为自己节省大量的行:

result = [{k:v} for k, v in my_list]

这应该是你想要的。你知道吗

相关问题 更多 >