Print dictionary values ​​that are inside a list in python

I am trying to print only dict values ​​inside a list in python.

car_object = {}
    cursor = self._db.execute('SELECT IDENT, MAKE, MODEL, DISPLACEMENT, POWER, LUXURY FROM CARS')
    for row in cursor:
       objectname = 'Car_Object_'+str(row['IDENT'])
       # print (objectname)
       car_object[objectname] = Cars(ident = row['IDENT'], make = row['MAKE'], model = row['MODEL'], disp = row['DISPLACEMENT'], power = row['POWER'], luxury = row['LUXURY'])
       print(objectname, car_object[objectname])
        #print(row['IDENT'], row['MAKE'], row['MODEL'], row['DISPLACEMENT'], row['POWER'], row['LUXURY'])

       yield dict(row)

So this is the print:

Car_Object_meA160 {'power': 55, 'ident': 'meA160', 'model': 'A160 CDI', 'disp': 1.7, 'make': 'mercedes', 'luxury': 'N'}
Car_Object_meA190 {'power': 92, 'ident': 'meA190', 'model': 'A190', 'disp': 1.7, 'make': 'mercedes', 'luxury': 'Y'}
Car_Object_meA210 {'power': 103, 'ident': 'meA210', 'model': 'A210 EVO', 'disp': 1.7, 'make': 'mercedes', 'luxury': 'Y'}

... and so on. I want to be able to print it like this:

                      IDENT         MAKE         MODEL        DISP       POWER     LUX
Car_Object_meA160     meA160       mercedes      A160 CDI     1.7          55      N
Car_Object_meA190     meA190       mercedes      A190         1.7          92      Y
Car_Object_meA210     meA210       mercedes      A210 EVO     1.7          103     Y

So, I want to be able to print only values ​​... with headers ordered in a specific way. Is it possible to do this? Thank.

-3
source share
4 answers

The complex part aligns several table entries and table headers. To do this, you first need to find out how long the record in each column lasts. padcan then be used to add a few spaces to the space.

fields = ["ident", "make", "model", "disp", "power", "luxury"]
max_len = {"name": max(map(len, car_objects)) + 1}
for f in fields:
    max_len[f] = max(map(len, [f] + [str(car[f]) for car in car_objects.values()]))
pad = lambda s, f: str(s).ljust(max_len[f])

car_objects pad, .

print pad("", "name") + " ".join(pad(f.upper(), f) for f in fields)
for name, car in car_objects.items():
    print pad(name, "name") + " ".join(pad(car[f], f) for f in fields)

, , car_objects Python. , car[f] getattr(c, f) .

: , , . , "", , . . for :

print (" " * 20) + " ".join(f.upper().ljust(10) for f in fields)

, yield:

print name.ljust(20) + " ".join(str(getattr(car, f)).ljust(10) for f in fields)

str.ljust(n) - , , , n. : rjust center. , , - , getattr(<object>, <attribute name>) ( getVariable).

. Python.

+1

:

#print your header labels first                                                                                                                       
d = {'power': 55, 'ident': 'meA160', 'model': 'A160 CDI', 'disp': 1.7, 'make': 'mercedes', 'luxury': 'N'}
# this is for each car                                                                                                                                
headers = ['ident', 'make', 'model', 'disp', 'power', 'luxury'] # change this order if you   want different order                                       
values = [d[h] for h in headers]
print("{0:12}{1:12}{2:12}{3:12}{4:12}{5:12}".format(values[0], values[1], values[2], values[3], values[4], values[5]))
0

... , , car_object[obj][key.lower()]. , Cars, , , - car_obj[obj].__getattribute__(key.lower())

car_object = {}
car_object['Car_Object_meA160'] = {'power': 55, 'ident': 'meA160', 'model': 'A160 CDI', 'disp': 1.7, 'make': 'mercedes', 'luxury': 'N'}
car_object['Car_Object_meA190'] = {'power': 92, 'ident': 'meA190', 'model': 'A190', 'disp': 1.7, 'make': 'mercedes', 'luxury': 'Y'}
car_object['Car_Object_meA210'] = {'power': 103, 'ident': 'meA210', 'model': 'A210 EVO', 'disp': 1.7, 'make': 'mercedes', 'luxury': 'Y'}

keys = ['IDENT', 'MAKE', 'MODEL', 'DISP', 'POWER', 'LUXURY']
fmt ='{:>10}' * (len(keys) + 1)
print ' '*len('Car_Object_meA160'), fmt.format('', *keys)

for obj in car_object:
    print obj, fmt.format('', *([car_object[obj][key.lower()] for key in keys]))
0

. , , .

def output(cars):
    print "          IDENT        MAKE        MODEL        DISP        POWER"
    for i in cars:
        print type(i),"    ",i[ident],"   ",i[make],"   ",i[model],"   ",i[disp],"   ",i[power]

It should print as many cars that you put. although I'm not sure about the distance.

-1
source

Source: https://habr.com/ru/post/1670512/


All Articles