Python Forum

Full Version: Getting Unique values from LISTS
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
#I wrote a program that come as a LIST output like below 

['scext', '80.0']
['scext', 'COLFUJDX440_DS11']
['scext', 'Hard disk 1']
['scext', '100.0']
['scext', 'COLFUJDX440_DS11']
['scext', 'Hard disk 2']
['scext', '200.0']
['scext', 'COLFUJDX440_DS11']
['scext', 'Hard disk 3']
['SCEXTVMD', '100.0']
['SCEXTVMD', 'COLHG600P01_DS33']
['SCEXTVMD', 'Hard disk 1']
['SCEXTVMD', '40.0']
['SCEXTVMD', 'COLHG600P01_DS33']
['SCEXTVMD', 'Hard disk 2']
['SCEXTVM', '100.0']
['SCEXTVMD', 'COLHG600P01_DS33']
['SCEXTVMD', 'Hard disk 3'] 
Output:
--- I would like to get unique value from LIST[0] and print it in below format. scext , 80.0, COLFUJDX440_DS11 , Hard disk 1 ,100.0 , COLFUJDX440_DS11,Hard disk 2 ,200.0 ,COLFUJDX440_DS11,Hard disk 3 SCEXTVMD , 100.0, COLHG600P01_DS33 , Hard disk 1 ,40.0 , COLHG600P01_DS33, Hard disk 2,100.0, COLHG600P01_DS33 , Hard disk 3
Please help me
This is not a single list, but numerous lists. So hence i grouped them together in a single list.

lists = [
['scext', '80.0'],
['scext', 'COLFUJDX440_DS11'],
['scext', 'Hard disk 1'],
['scext', '100.0'],
['scext', 'COLFUJDX440_DS11'],
['scext', 'Hard disk 2'],
['scext', '200.0'],
['scext', 'COLFUJDX440_DS11'],
['scext', 'Hard disk 3'],
['SCEXTVMD', '100.0'],
['SCEXTVMD', 'COLHG600P01_DS33'],
['SCEXTVMD', 'Hard disk 1'],
['SCEXTVMD', '40.0'],
['SCEXTVMD', 'COLHG600P01_DS33'],
['SCEXTVMD', 'Hard disk 2'],
['SCEXTVMD', '100.0'],
['SCEXTVMD', 'COLHG600P01_DS33'],
['SCEXTVMD', 'Hard disk 3'] 
]

d = {}
for lst in lists:
    key = lst[0]
    value = lst[1]
    d.setdefault(key, []).append(value)
    
print(d)
Output:
{'scext': ['80.0', 'COLFUJDX440_DS11', 'Hard disk 1', '100.0', 'COLFUJDX440_DS11', 'Hard disk 2', '200.0', 'COLFUJDX440_DS11', 'Hard disk 3'], 'SCEXTVMD': ['100.0', 'COLHG600P01_DS33', 'Hard disk 1', '40.0', 'COLHG600P01_DS33', 'Hard disk 2', '100.0', 'COLHG600P01_DS33', 'Hard disk 3']}
or run it through pretty printer:
Output:
{'SCEXTVMD': ['100.0', 'COLHG600P01_DS33', 'Hard disk 1', '40.0', 'COLHG600P01_DS33', 'Hard disk 2', '100.0', 'COLHG600P01_DS33', 'Hard disk 3'], 'scext': ['80.0', 'COLFUJDX440_DS11', 'Hard disk 1', '100.0', 'COLFUJDX440_DS11', 'Hard disk 2', '200.0', 'COLFUJDX440_DS11', 'Hard disk 3']}
The dictionary is close to the format you want, but has organized it near that format. You just have to print it out as you like.
import urllib3
from bs4 import BeautifulSoup 
import requests

server_name="https:***********************************************"

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning


http = urllib3.PoolManager()
headers = urllib3.util.make_headers(basic_auth='****:****')
r = http.request('GET', server_name, headers=headers)
soup = BeautifulSoup(r.data, 'lxml')
Server=[i.get_text() for i in soup.find_all('ops:name')]
Identifier=[ i['identifier'] for i in soup.find_all('ops:resource') ]
Convert_Dict_01 = dict(zip(Server,Identifier))
#print(Convert_Dict_01)
for i in Identifier:
        Properties_URL="https:/*********/"+i+"/properties"
        r = http.request('GET', Properties_URL, headers=headers)
        soup=BeautifulSoup(r.data, 'lxml')
        Property_ID=[j['resourceid'] for j in soup.find_all('ops:resource-property') ]
        for element in soup.find_all("ops:property"):
            Name=element['name']
            Total=[element.get_text()]
            if 'scsi' in Name:
                Convert_Dict_02 = dict(zip(Property_ID,Total))
                for i,j in Convert_Dict_01.items():
                    for m,n in Convert_Dict_02.items():
                        if (Convert_Dict_01[i] == m):
                            SERVER = [i]
                FINAL=[SERVER,Total]
                print(FINAL)
Output:
Thanks for your reply metulburr, since my output coming in multiple list , i would like to know how i can get all list under one list? Since my output gives tons of data, i cannot copy the entire output and put it in one list , please suggest me to get multiple list under one list FINAL=[['scext', '80.0'],['scext', 'COLFUJDX440_DS11'],['scext', 'Hard disk 1'],['scext', '100.0'],['scext', 'COLFUJDX440_DS11'],['scext', 'Hard disk 2'],['scext', '200.0'],['scext', 'COLFUJDX440_DS11'],['scext', 'Hard disk 3'],['SCEXTVMD', '100.0'],['SCEXTVMD', 'COLHG600P01_DS33'],['SCEXTVMD', 'Hard disk 1'],['SCEXTVMD', '40.0'],['SCEXTVMD', 'COLHG600P01_DS33'],['SCEXTVMD', 'Hard disk 2'],['SCEXTVM', '100.0'],['SCEXTVMD', 'COLHG600P01_DS33'],['SCEXTVMD', 'Hard disk 3'] ]