比较和排列数组列表中的数据

问题描述 投票:0回答:1

我的数组列表中包含包含 [代码] [状态] [设备类型] 的数据。设备类型可以是 A 或 B。数组如下所示:

sample_list = [["C1-0001", "Offline", "A"], ["C1-0001", "Offline", "B"], ["C1-0002", "Online", "A"]]

数组列表可以这样解释:

我有另一个仅包含[代码]的列表。

代码列表可以这样解释:

基本上,我想检查包含[code]的列表的状态,仅包括可以从数组列表派生的一些其他参数。

总而言之,我要输出的参数就是它的[解][代码][状态][在线A类设备][离线A类设备][在线B类设备][离线B类设备]。

solution is C if it has only 1 type "A" device. B if otherwise.
status is "Online" if even just 1 type of device is on for a particular "code"

这总结了我想要的输出:

在使用字典之前,我做了不同的事情,并在这里得到了我的解决方案:如何计算我的数据,使我的数据的对应关系像“或”运算一样简化?

但是现在我有额外的参数,并且输出上基本上有重复的[代码],这在字典中是不允许的,我很难理解数据。希望你们能给我一些想法。

编辑:我成功按顺序输出了[解决方案] [代码]和[状态]。对于每种类型的在线设备,我在想如果我循环遍历列表中的许多列表,是否有一些东西可以检查列表中数组的索引 0 是否没有更改:

sample_list = [["C1-0001", "Offline", "A"], ["C1-0001", "Offline", "B"], ["C1-0002", "Online", "A"]]

这是我当前的设备状态代码:

for i in sites:
    for j in nested_list
        if j[0] == i and j[1] == "Online" and j[2] == "A":
            something
        elif j[0] == i and j[1] == "Offline" and j[2] == "A":
            something
        elif j[0] == i and j[1] == "Online" and j[2] == "B":
            something
        elif j[0] == i and j[1] == "Offline" and j[2] == "B":
            something

站点列表是重复的代码,如果它包含 2 个设备,无论设备类型如何,它都会出现两次。

nested_list 列表包含 [codes] [status] [device type] 的数组

python arrays counter nested-lists
1个回答
0
投票

有点明白了。这是我目前拥有的实际代码。

results = dict()

for site, status, device in local_site_status_device_list:
    pretally = results.setdefault(site, {})
    tally = pretally.setdefault(device, {})
    tally[status] = tally.get(status, 0) + 1

基本上,这就是我想要输出的:

由于没有类型“A”或类型“B”设备在线。从左侧看,该站点的整体状态为“离线”。在右侧。您可以查看该站点拥有的设备类型。并且两个站点都只有一种类型“A”设备,因此它在所使用的解决方案上输出 C。希望这能澄清我想要的输出。现在剩下的是这些数据的总体统计。

© www.soinside.com 2019 - 2024. All rights reserved.