遍历python词典的字典

时间:2020-06-10 22:02:39

标签: python-3.x dictionary

我有一个像下面的python字典

    car_dict=
{
'benz': {'usa':876456, 'uk':965471},
'audi' : {'usa':523487, 'uk':456879},
'bmw': {'usa':754235, 'uk':543298}
}

我需要下面的输出

benz,876456,965471
audi,523487,456879
bmw,754235,543298

以及下面的排序形式

audi,523487,456879
benz,876456,965471
bmw,754235,543298

请帮助我获得两个输出

5 个答案:

答案 0 :(得分:1)

您可以这样做:

car_dict= {
'benz': {'usa':876456, 'uk':965471},
'audi' : {'usa':523487, 'uk':456879},
'bmw': {'usa':754235, 'uk':543298}
}

cars = []
for car in car_dict:
    cars.append('{},{},{}'.format(
        car,
        car_dict[car]['usa'],
        car_dict[car]['uk']
    ))
cars = sorted(cars)

for car in cars:
    print(cars)

结果

audi,523487,456879
benz,876456,965471
bmw,754235,543298

说明

遍历每辆车,并将型号,美国编号和英国编号存储在列表中。按字母顺序对列表进行排序。列出来。

答案 1 :(得分:1)

要打印数据

x_train = tfds.load('ucf101', split='train', shuffle_files=True, batch_size = 64)

def parser(x):
  dim = x['video'][:,30:40, ...]
  return dim, dim

x_train = x_train.map(parser)

...

history = model.fit(x_train,
                    epochs=100,
                    verbose=1,
                    callbacks=[cp_callback])

输出

# Use List comprehension to sorted list of values from car, USA, UK fields
data = [[car] + list(regions.values()) for car, regions in sorted(car_dict.items(), key=lambda x:x[0])]
for row in data:
  print(*row, sep = ',')

说明

按汽车对物品排序

audi,523487,456879
benz,876456,965471
bmw,754235,543298

列表推导中的每个内部列表都是汽车,美国,英国的值

for car, regions in sorted(car_dict.items(), key=lambda x:x[0])

打印以逗号分隔的每一行

[car] + list(regions.values())

答案 2 :(得分:0)

您是要打印输出还是只是以更好的格式组织数据以进行分析。

如果是后者,我会用熊猫做以下事情

import pandas as pd
pd.DataFrame(car_dict).transpose().sort_index()

要以您希望的方式查看终端上的输出,

for index, row in pd.DataFrame(car_dict).transpose().sort_index().iterrows():
    print('{},{},{}'.format(index, row['usa'], row['uk']))

将打印出来:

audi,523487,456879
benz,876456,965471
bmw,754235,543298

答案 3 :(得分:0)

在解决方案下方找到

car_dict = {
            'benz': {'usa':876456, 'uk':965471},
            'audi' : {'usa':523487, 'uk':456879},
            'bmw': {'usa':754235, 'uk':543298}
           }

keys = list(car_dict.keys())
keys.sort()

for i in keys:
    print ( i, car_dict[i] ['usa'], car_dict[i] ['uk'])

答案 4 :(得分:0)

我喜欢@DarrylG给出的列表理解答案,但是在这种情况下,您实际上并不需要lambda表达式。

sorted()默认情况下只会按键进行排序,因此您可以使用:

data = [[car] + list(regions.values()) for car, regions in sorted(car_dict.items())]

我也将做一个小的改动。如果要对区域顺序进行更明确的控制(或希望使用其他顺序,则可以将[car] + list(regions.values())替换为[car, regions['usa'], regions['uk']],如下所示:

data = [[car, regions['usa'], regions['uk']] for car, regions in sorted(car_dict.items())]

当然,这意味着如果您添加更多区域,则必须更改此设置,但我更喜欢显式设置顺序。