You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术求助:如何将指定List转换为Dict?现有代码未达预期

解决方法:将分组的键值对列表转换为字典列表

首先,咱们先看看你之前代码的问题:你用for i in store: print(dict(zip(i,i)))的时候,每个i是单个的键值对(比如['hostname ', ' ABCD']),zip(i,i)会把列表里的每个元素和自己配对,结果自然是键和值完全一样的字典,这肯定不是你想要的~

你的目标是把每3个键值对组合成一个主机信息的字典,对吧?这里有几种简单的实现方式:

方法1:循环分组转换

直接按每3个元素为一组,把每组转换成字典,再收集到列表里:

store = [['hostname ', ' ABCD'], ['fsystem ', ' /dev/sdb'], ['actual_size ', ' 2.5T'], ['hostname ', ' XYZ'], ['fsystem ', ' /dev/sdb'], ['actual_size ', ' 2.5T']]

result = []
# 按步长3遍历索引,每次取3个元素的切片
for idx in range(0, len(store), 3):
    # 把当前组的键值对直接转成字典
    host_info = dict(store[idx:idx+3])
    result.append(host_info)

print(result)

输出结果:

[{'hostname ': ' ABCD', 'fsystem ': ' /dev/sdb', 'actual_size ': ' 2.5T'}, {'hostname ': ' XYZ', 'fsystem ': ' /dev/sdb', 'actual_size ': ' 2.5T'}]

方法2:列表推导式简化

如果想让代码更简洁,可以用列表推导式一步完成:

result = [dict(store[idx:idx+3]) for idx in range(0, len(store), 3)]

效果和方法1完全一样,只是写法更紧凑。

可选优化:清理键值的多余空格

注意到你的键和值里都有多余的空格(比如hostname 、 ABCD),如果想去掉这些空格,可以在转换时处理一下:

result = []
for idx in range(0, len(store), 3):
    host_info = {}
    for key, value in store[idx:idx+3]:
        # 用strip()去掉首尾空格
        host_info[key.strip()] = value.strip()
    result.append(host_info)

优化后的输出:

[{'hostname': 'ABCD', 'fsystem': '/dev/sdb', 'actual_size': '2.5T'}, {'hostname': 'XYZ', 'fsystem': '/dev/sdb', 'actual_size': '2.5T'}]

内容的提问来源于stack exchange,提问作者Shrikant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:48:58