Skip to main content
 首页 » 编程设计

python之python获取包含列表的信息

2025年05月04日752php

我正在编写一个脚本来帮助我记录我们的网络机房。

该脚本背后的想法是,一个房间是一个列表,其中包含多个机架列表。机架列表包含称为模块的列表以及服务器/交换机/等。在模块列表中是带有电缆编号的实际端口。

例如:

[04/02, [MM02, [1, #1992, 2, #1993, 3, #1567 ....], MM03, [1, #1234 .....]], 04/03, [MM01, .........]]] 

04/02 = 第一架

MM02 = 该机架中的第一个模块

1 = 端口号

#1992 = 电缆编号

我希望你明白这一点。

我写的脚本比较房间列表中的电缆编号,看是否有重复。现在它变得棘手了:然后它应该用另一个端口的机架和模块替换电缆编号。这应该很容易,因为 module 和 rack 是那些包含端口的列表的第一个元素,但我不知道如何访问这些信息。 (我是编程小白)

请您参考如下方法:

如推荐中所述,此处使用的更好的数据结构是嵌套 dicts :

data = { 
    "04/02": { 
        "MM02": {1: "#1992", 2: "#1993", 3: "#1567", ...}, 
        "MM03": {1: "#1234", ...}, 
        ...  
    }, 
    "04/03": { 
        "MM01": ... 
        ... 
    }, 
    ... 
} 

然后你只需做 data["04/02"]["MM02"] = {1: "#1992", 2: "#1993", 3: "#1567", ...} 来替换值,但是,这意味着您需要手动创建子词典的缺点 - 但是,solutions to this problem例如:

from functools import partial 
from collections import defaultdict 
 
tripledict = partial(defaultdict, partial(defaultdict, dict)) 
mydict = tripledict() 
mydict['foo']['bar']['foobar'] = 25 

这些不仅在可读性和可用性方面具有优势,而且在访问速度方面也具有优势。