Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
unpacking list
#1
hi,

test script...

#!/usr/bin/env python3

#test_lst = [('IP', '172.17.10.147'), ('IP', '172.16.88.57'), ('IP', '172.16.12.147')]
test_data = {"identity": {"HOSTNAME": "sag01147", "AIX_REG_CLIENT_VER": "0.1-alpha", "SYSTEM_NAME": "SAG01147_JBOSS4_HA"}, "timestamp": {"DATETIME": "2021-09
-10T14:54:51"}, "nodeinfo": {"HAS_COBOL": "0", "HAS_TUXEDO": "0", "HAS_SAP": "0", "HAS_ORACLE": "0", "IS_LPM": "0", "HAS_JBOSS": "1", "IS_ZPI": "0", "IS_ZPV"
: "0", "HAS_UC4": "0", "MEM_VALUE": "61440", "CPU_VALUE": "4", "STORAGE_VALUE": "258", "MAN_SYS_NAME": "CALL ME LEON", "LOCATION": "UR MOMS BUTT", "OS_LEVEL"
: "7200-04-03-2038", "UPTIME": "55", "MACHINE_SERIAL": "The Number of the Beast", "CPU_ENTC": "0.60", "YUM_REPO": "IBM", "Java6": "6.0.0.655", "Java6_64": "6
.0.0.655", "Java7": "7.0.0.665", "Java7_64": "7.0.0.665", "Java8_64": "8.0.0.610", "ip": [[["IP", "172.17.10.147"], ["IP", "172.16.88.57"], ["IP", "172.16.12
.147"]]]}}

entries = []
for key, value in test_data['nodeinfo'].items():
    #print(type(value))
    if isinstance(value, list):
        for x, y in enumerate(value):
            entries.append([y[0], y[1]])
    else:
        entries.append([key, value])
for i in entries:
    print(*i)
#print(entries)
completely inconvenient output

HAS_COBOL 0
HAS_TUXEDO 0
HAS_SAP 0
HAS_ORACLE 0
IS_LPM 0
HAS_JBOSS 1
IS_ZPI 0
IS_ZPV 0
HAS_UC4 0
MEM_VALUE 61440
CPU_VALUE 4
STORAGE_VALUE 258
MAN_SYS_NAME CALL ME LEON
LOCATION UR MOMS BUTT
OS_LEVEL 7200-04-03-2038
UPTIME 55
MACHINE_SERIAL The Number of the Beast
CPU_ENTC 0.60
YUM_REPO IBM
Java6 6.0.0.655
Java6_64 6.0.0.655
Java7 7.0.0.665
Java7_64 7.0.0.665
Java8_64 8.0.0.610
['IP', '172.17.10.147'] ['IP', '172.16.88.57']
but i want this

HAS_COBOL 0
HAS_TUXEDO 0
HAS_SAP 0
HAS_ORACLE 0
IS_LPM 0
HAS_JBOSS 1
IS_ZPI 0
IS_ZPV 0
HAS_UC4 0
MEM_VALUE 61440
CPU_VALUE 4
STORAGE_VALUE 258
MAN_SYS_NAME CALL ME LEON
LOCATION UR MOMS BUTT
OS_LEVEL 7200-04-03-2038
UPTIME 55
MACHINE_SERIAL The Number of the Beast
CPU_ENTC 0.60
YUM_REPO IBM
Java6 6.0.0.655
Java6_64 6.0.0.655
Java7 7.0.0.665
Java7_64 7.0.0.665
Java8_64 8.0.0.610
IP 172.17.10.147 
IP 172.16.88.57
i'm lost in translation, so please someone give me a hint.
Reply
#2
There is a lists inside of two lists, so iterate over the list of lists by doing for list_value in value[0]:
# test_lst = [('IP', '172.17.10.147'), ('IP', '172.16.88.57'), ('IP', '172.16.12.147')]
test_data = {
    "identity": {
        "HOSTNAME": "sag01147",
        "AIX_REG_CLIENT_VER": "0.1-alpha",
        "SYSTEM_NAME": "SAG01147_JBOSS4_HA",
    },
    "timestamp": {"DATETIME": "2021-09-10T14:54:51"},
    "nodeinfo": {
        "HAS_COBOL": "0",
        "HAS_TUXEDO": "0",
        "HAS_SAP": "0",
        "HAS_ORACLE": "0",
        "IS_LPM": "0",
        "HAS_JBOSS": "1",
        "IS_ZPI": "0",
        "IS_ZPV": "0",
        "HAS_UC4": "0",
        "MEM_VALUE": "61440",
        "CPU_VALUE": "4",
        "STORAGE_VALUE": "258",
        "MAN_SYS_NAME": "CALL ME LEON",
        "LOCATION": "UR MOMS BUTT",
        "OS_LEVEL": "7200-04-03-2038",
        "UPTIME": "55",
        "MACHINE_SERIAL": "The Number of the Beast",
        "CPU_ENTC": "0.60",
        "YUM_REPO": "IBM",
        "Java6": "6.0.0.655",
        "Java6_64": "6.0.0.655",
        "Java7": "7.0.0.665",
        "Java7_64": "7.0.0.665",
        "Java8_64": "8.0.0.610",
        "ip": [
            [["IP", "172.17.10.147"], ["IP", "172.16.88.57"], ["IP", "172.16.12.147"]]
        ],
    },
}

entries = []
for key, value in test_data["nodeinfo"].items():
    #print(type(value))
    if isinstance(value, list):
        for list_value in value[0]:
            entries.append(list_value)
    else:
        entries.append([key, value])

for i in entries:
    print(*i)
# print(entries)
Output:
HAS_COBOL 0 HAS_TUXEDO 0 HAS_SAP 0 HAS_ORACLE 0 IS_LPM 0 HAS_JBOSS 1 IS_ZPI 0 IS_ZPV 0 HAS_UC4 0 MEM_VALUE 61440 CPU_VALUE 4 STORAGE_VALUE 258 MAN_SYS_NAME CALL ME LEON LOCATION UR MOMS BUTT OS_LEVEL 7200-04-03-2038 UPTIME 55 MACHINE_SERIAL The Number of the Beast CPU_ENTC 0.60 YUM_REPO IBM Java6 6.0.0.655 Java6_64 6.0.0.655 Java7 7.0.0.665 Java7_64 7.0.0.665 Java8_64 8.0.0.610 IP 172.17.10.147 IP 172.16.88.57 IP 172.16.12.147
Reply
#3
works basically, tried to extend it and for some reason values are getting lost in the append loop...

test script:

#!/usr/bin/env python3

test_data = {"identity": {"HOSTNAME": "kittykat", "AIX_REG_CLIENT_VER": "0.1-alpha", "SYSTEM_NAME": "KITTYKAT_HA"}, "timestamp": {"DATETIME": "2021-09-11T15:
43:46"}, "nodeinfo": {"HAS_COBOL": "0", "HAS_TUXEDO": "0", "HAS_SAP": "0", "HAS_ORACLE": "0", "IS_LPM": "0", "HAS_BLEH": "1", "IS_ZPI": "0", "IS_ZPV": "0", "
HAS_UC4": "0", "MEM_VALUE": "61440", "CPU_VALUE": "4", "STORAGE_VALUE": "258", "MAN_SYS_NAME": "FRODO02", "LOCATION": "MOUNT_DOOM", "OS_LEVEL": "7200-04-03-2
038", "UPTIME": "56", "MACHINE_SERIAL": "The Number of the Beast", "CPU_ENTC": "0.60", "YUM_REPO": "IBM", "Java6": "6.0.0.655", "Java6_64": "6.0.0.655", "Jav
a7": "7.0.0.665", "Java7_64": "7.0.0.665", "Java8_64": "8.0.0.610", "IS_CLUSTER": "1", "CLUSTER_NAME": "DRUNK_DONKEY", "CLUSTER_NODES": "kittykat,shittykat",
 "CLUSTER_NODENAME": "kittykat", "CLUSTER_RGS": "BLEH33,BLEH34,BLEH37,BLEH38", "HA_LEVEL": "7.2.4 SP2", "cl_rgs": [[["DRUNK DONKEY", "BLEH34"]], [["DRUNK DON
KEY", "BLEH38"]]], "ip": [[["IP", "XXX.XX.10.147"], ["IP", "XXX.XX.88.57"], ["IP", "XXX.XX.12.147"]]], "ip_long": [[["IP_LONG", "XXX.XX.10.147/XXX.XXX.248.0/
XXX.XX.15.XXX/"], ["IP_LONG", "XXX.XX.88.57/XXX.XXX.192.0/XXX.XX.127.XXX/kittykat-ipl.bladomain.at"], ["IP_LONG", "XXX.XX.12.147/XXX.XXX.254.0/XXX.XX.13.XXX/
"]]]}, "clusterinfo": {"cl_nodes": [[["BLEH4", "kittykat"]]], "rg_current_node": [[["BLEH34", "kittykat"]], [["BLEH38", "kittykat"]]], "rg_service_label": [[
["BLEH34", "bleh34_srv"]], [["BLEH38", "bleh38_srv"]]], "rg_service_ip": [[["BLEH34", "XXX.XX.80.42"]], [["BLEH38", "XXX.XX.80.46"]]], "rg_service_dns": [[["
BLEH34", "bleh-34.bladomain.at"]], [["BLEH38", "bleh-38.bladomain.at"]]], "rg_service_ip_long": [[["BLEH34", "XXX.XX.80.42/bleh34_srv/bleh-34.bladomain.at"]]
, [["BLEH38", "XXX.XX.80.46/bleh38_srv/bleh-38.bladomain.at"]]]}}



entries = []
cluster_entries = []
for key, value in test_data["nodeinfo"].items():
    #print(type(value))
    if isinstance(value, list):
        for list_value in value[0]:
            entries.append(list_value)
    else:
        entries.append([key, value])
if test_data['nodeinfo']['IS_CLUSTER'] == '1':
    for key, value in test_data["clusterinfo"].items():
        #print(type(value))
        if isinstance(value, list):
            for list_value in value[0]:
                print(value[0])
                cluster_entries.append(list_value)
        else:
            cluster_entries.append([key, value])
final = []
final.extend(entries)
final.extend(cluster_entries)
#print(final)
for i in final:
    print(*i)
#print(entries)
output:

[['BLEH4', 'kittykat']]
[['BLEH34', 'kittykat']]
[['BLEH34', 'bleh34_srv']]
[['BLEH34', 'XXX.XX.80.42']]
[['BLEH34', 'bleh-34.bladomain.at']]
[['BLEH34', 'XXX.XX.80.42/bleh34_srv/bleh-34.bladomain.at']]
HAS_COBOL 0
HAS_TUXEDO 0
HAS_SAP 0
HAS_ORACLE 0
IS_LPM 0
HAS_BLEH 1
IS_ZPI 0
IS_ZPV 0
HAS_UC4 0
MEM_VALUE 61440
CPU_VALUE 4
STORAGE_VALUE 258
MAN_SYS_NAME FRODO02
LOCATION MOUNT_DOOM
OS_LEVEL 7200-04-03-2038
UPTIME 56
MACHINE_SERIAL The Number of the Beast
CPU_ENTC 0.60
YUM_REPO IBM
Java6 6.0.0.655
Java6_64 6.0.0.655
Java7 7.0.0.665
Java7_64 7.0.0.665
Java8_64 8.0.0.610
IS_CLUSTER 1
CLUSTER_NAME DRUNK_DONKEY
CLUSTER_NODES kittykat,shittykat
CLUSTER_NODENAME kittykat
CLUSTER_RGS BLEH33,BLEH34,BLEH37,BLEH38
HA_LEVEL 7.2.4 SP2
DRUNK DONKEY BLEH34
IP XXX.XX.10.147
IP XXX.XX.88.57
IP XXX.XX.12.147
IP_LONG XXX.XX.10.147/XXX.XXX.248.0/XXX.XX.15.XXX/
IP_LONG XXX.XX.88.57/XXX.XXX.192.0/XXX.XX.127.XXX/kittykat-ipl.bladomain.at
IP_LONG XXX.XX.12.147/XXX.XXX.254.0/XXX.XX.13.XXX/
BLEH4 kittykat
BLEH34 kittykat
BLEH34 bleh34_srv
BLEH34 XXX.XX.80.42
BLEH34 bleh-34.bladomain.at
BLEH34 XXX.XX.80.42/bleh34_srv/bleh-34.bladomain.at
all BLEH38 instances are missing in the output, like the loop is not working correctly or something...why is this?
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Unpacking a dict with * or ** msrk 4 975 Dec-02-2023, 11:50 PM
Last Post: msrk
  iterate through the dict_values while unpacking the dictionary PeacockOpenminded 3 1,288 Jan-22-2023, 12:44 PM
Last Post: PeacockOpenminded
  Unpacking zip object Mark17 12 3,193 Mar-28-2022, 04:59 PM
Last Post: deanhystad
  unpacking tuple not working project_science 1 1,479 Jan-09-2021, 09:09 PM
Last Post: buran
  Unpacking a list Mark17 3 2,595 Dec-18-2020, 05:08 AM
Last Post: aajkaal
  Unpacking wheel files DavidTheGrockle 3 11,214 Dec-15-2020, 05:11 PM
Last Post: DavidTheGrockle
  Why the result of "extended iterable unpacking" with set() is unpredictable? zohanlin 2 2,046 Jun-29-2020, 10:30 AM
Last Post: zohanlin
  Unpacking nested lists yonatan776 1 2,187 Apr-14-2020, 08:50 PM
Last Post: buran
  Unpacking dictionary from .xlsx as Kwargs etjkai 5 2,845 Dec-27-2019, 05:31 PM
Last Post: etjkai
  Tuple Unpacking HarshaliPatel 3 2,837 Jan-30-2019, 12:42 PM
Last Post: dukoolsharma

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020