给出了一个包含如下接口配置的字典:
{"1/1":{"speed": 100, "duplex":...}, "1/2":{"speed": 100, "duplex":...}, ... "2/1":{"speed": 100, "duplex":...}"2/1“中的第一标识符用于底盘(2),第二标识符用于接口(1)。每个底盘包含X个接口,我需要底盘的数量(在1/1,2/1,3/1,它将是3)和在每个底盘中的接口数(在1/1,1/2,. 1/48,它将是48)。我不想循环太多的接口,因为有很多quiete。
全字典:
interfaces:
1: {tagged: Array(4)}
1/1: {adminState: false, lldp: false, loopback: true, mobile: true, speed: '100'}
1/2: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '100'}
1/3: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '900'}
1/4: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/5: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/6: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/7: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/8: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/9: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/10: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/11: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/12: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/13: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/14: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/15: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/16: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/17: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/18: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/19: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/20: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/21: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/22: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/23: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/24: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/25: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/26: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/27: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/28: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/29: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/30: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/31: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/32: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/33: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/34: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/35: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/36: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/37: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/38: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/39: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/40: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/41: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/42: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/43: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/44: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/45: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/46: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/47: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/48: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
1/49: {alias: '->sw01-1/1/26', linkagg: '1', trap: true}
1/50: {lldp: false}
2/1: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/2: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/3: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/4: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/5: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/6: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/7: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/8: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/9: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/10: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/11: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/12: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/13: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/14: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/15: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/16: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/17: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/18: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/19: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/20: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/21: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/22: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/23: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/24: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/25: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/26: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/27: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/28: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/29: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/30: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/31: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/32: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/33: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/34: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/35: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/36: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/37: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/38: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/39: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/40: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/41: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/42: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/43: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/44: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/45: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/46: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/47: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/48: {lldp: false, loopback: true, mobile: true, speed: '100', untagged: '200'}
2/49: {lldp: false}
2/50: {alias: '->sw01-2/1/26', linkagg: '1', trap: true}
3/1: {untagged: '700'}```发布于 2021-12-30 10:03:36
from collections import defaultdict as dd
result = dd(max)
x = {'1/1': {}, '1/2': {}, '1/3': {}, '1/4': {}, '1/5': {}, '1/6': {}, '1/7': {}, '1/8': {}, '1/9': {},
... '2/1': {}, '2/2': {}, '2/3': {}, '2/4': {}, '2/5': {}, '2/6': {}, '2/7': {}, '2/8': {}, '2/9': {}, '2/10': {}, '2/11': {}, '2/12': {}, '2/13': {}, '2/14': {}, '2/15': {}, '2/16': {}, '2/17': {}, '2/18': {}, '2/19': {}, '2/20': {}, '2/21': {}, '2/22': {}, '2/23': {}, '2/24': {}, '2/25': {}, '2/26': {}, '2/27': {}, '2/28': {}, '2/29': {}, '2/30': {}, '2/31': {}, '2/32': {}, '2/33': {}, '2/34': {}, '2/35': {}, '2/36': {}, '2/37': {},
... '2/38': {}, '2/39': {}, '2/40': {}, '2/41': {}, '2/42': {}, '2/43': {}, '2/44': {}, '2/45': {}, '2/46': {}, '2/47': {}, '2/48': {}, '2/49': {},
... '3/1': {}, '3/2': {}, '3/3': {}, '3/4': {}, '3/5': {}, '3/6': {}, '3/7': {}, '3/8': {}, '3/9': {}, '3/10': {}}
for k in x.keys():
if '/' in k:
a, b = k.split('/')
result[a]=b
print(result)
# defaultdict(<built-in function max>, {'1': '9', '2': '49', '3': '10'})发布于 2021-12-30 09:38:50
将信息存储为子字符串总是意味着您要为自己做更多的工作。
您只需使用嵌套的dict interfaces = {interface:{chassis:{"speed": 100, "duplex":...},..},..} --即use ()--来了解每个接口中有多少底盘。
interfaces = {1:{1:{"speed": 100},2:{"speed": 100}},
2:{1:{"speed": 200}}}
for interface, chassis_dict in interfaces.items():
print(interface, len(chassis_dict))或者一个接口对象,其中包含所有支持的底盘的列表。
发布于 2021-12-30 09:49:26
from itertools import groupby
data = {"1/1":{}, "1/2":{}, "2/1":{}, "2/2":{}, "2/3":{}}
c_i = [k.split('/') for k in data.keys()]
grouped = {k: list(g) for k, g in groupby(c_i, key=lambda x: x[0])}
print('Count chassis:', len(grouped))
print('Count interface for chassis #1:', len(grouped['1']))
print('Count interface for chassis #2:', len(grouped['2']))输出:
Count chassis: 2
Count interface for chassis #1: 2
Count interface for chassis #2: 3https://stackoverflow.com/questions/70529669
复制相似问题