将清单清单变成字典

时间:2019-10-14 17:36:57

标签: python-3.x list-comprehension dictionary-comprehension

我已经花了几天的时间研究这个主题,几乎遍历该问题的所有答案,但经过反复试验,我仍然无法获得可以满足我需求的任何东西。 (我在下面发布了我实际的格式化代码代码,而不是描述部分)也许这只是我对python和列表/字典理解的理解的一个基本缺陷,但我希望有人能帮助我,或者为我指出正确的方向否决我或关闭票。首先让我解释一下我要做什么: 1.从Netsh的Windows上的IP接口获取输出并将其存储。 2.操作列表,以便我使用标题列表中的键创建字典。 3.它们在标题列表中的键将具有另一个字典的值 4.嵌套字典应具有netsh描述(DHCP启用:)的键,并且值在“:”上分开。

例如:{“接口“以太网2”的配置”:         {             启用DHCP:是的,             接口指标:75 ...         },     {接口“本地连接* 1”的配置”:         {             启用DHCP:是的,             InterfaceMetric:25,...         },     }

相反,我得到:

{'DHCP enabled': ['                         No'], 'InterfaceMetric': ['                      75'], 'IP Address': ['                           127.0.0.1'], 'Subnet Prefix': ['                        127.0.0.0/8 (mask 255.0.0.0)'], 'Default Gateway': ['                      10.1.42.1'], 'Gateway Metric': ['                       0']}

但是,当我尝试进行字典理解时,我得到的东西会使列表混乱,然后又不会遍历列表中的所有项目并从中进行适当的设置。该列表具有许多列表元素。我不确定我要去哪里哪里,如果我的问题措辞不当,请事先向我道歉。

from subprocess import check_output
import pprint

def get_all_network_info():
    s = check_output(['netsh', 'interface', 'ip', 'show', 'address']).decode('utf-8')
    s = s.splitlines()
    return s


def run_parser():
    results = []
    split_results = []
    headers = []
    s = get_all_network_info()
    for i in s:
        results.append(i.strip())
    for j in results:
        if j.find("Configuration") != -1:
            headers.append(j)
        elif j != "":
            split_results.append(j.split(":"))

    # Creating Dictionaries
    ipdict = {item[0]: item[1:] for item in split_results}
    for k, v in ipdict.items():
        for i in v:
            print(k, i.strip())

    print(ipdict)

def main():
    run_parser()


if __name__ == '__main__':
    main()

现在,我知道我实际上没有在标头列表上调用迭代。现在,我只是想让split_results列表成为合适的字典。

0 个答案:

没有答案