unpacking list - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: unpacking list (/thread-34879.html) |
unpacking list - wardancer84 - Sep-10-2021 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.57i'm lost in translation, so please someone give me a hint. RE: unpacking list - Yoriz - Sep-10-2021 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)
RE: unpacking list - wardancer84 - Sep-11-2021 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.atall BLEH38 instances are missing in the output, like the loop is not working correctly or something...why is this? |