Python 3.x 在python字典上循环

Python 3.x 在python字典上循环,python-3.x,dictionary,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,7542

我有一本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
我需要如下输出

    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
并且以排序的形式以及如下所示

    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

请帮助我获取这两个输出

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

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

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

您是希望打印输出,还是仅以更好的格式组织数据进行分析

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

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
您可以这样做:

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
audi,523487,456879
benz,876456,965471
bmw,754235,543298
解释

循环浏览每辆车,并将型号、美国编号和英国编号存储在列表中。按字母顺序对列表排序。列出它。

您可以这样做:

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
audi,523487,456879
benz,876456,965471
bmw,754235,543298
解释


循环浏览每辆车,并将型号、美国编号和英国编号存储在列表中。按字母顺序对列表排序。列出它。

在下面找到解决方案,

car\u dict={
“奔驰”:{“美国”:876456,“英国”:965471},
奥迪:美国:523487;英国:456879},
“宝马”:美国:754235,“英国”:543298}
}
钥匙=列表(汽车钥匙())
keys.sort()
对于i键:
打印(i,汽车目录[i]['usa'],汽车目录[i]['uk'])

在下面找到解决方案,

car\u dict={
“奔驰”:{“美国”:876456,“英国”:965471},
奥迪:美国:523487;英国:456879},
“宝马”:美国:754235,“英国”:543298}
}
钥匙=列表(汽车钥匙())
keys.sort()
对于i键:
打印(i,汽车目录[i]['usa'],汽车目录[i]['uk'])
以打印数据

# 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
audi,523487,456879
benz,876456,965471
bmw,754235,543298
解释

按车分类

for car, regions in sorted(car_dict.items(), key=lambda x:x[0])
列表理解中的每个内部列表都是car、USA、UK值的行

[car] + list(regions.values())
打印以逗号分隔的每一行

for row in data:
    print(*row, sep = ',')
打印数据

# 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
audi,523487,456879
benz,876456,965471
bmw,754235,543298
解释

按车分类

for car, regions in sorted(car_dict.items(), key=lambda x:x[0])
列表理解中的每个内部列表都是car、USA、UK值的行

[car] + list(regions.values())
打印以逗号分隔的每一行

for row in data:
    print(*row, sep = ',')

我喜欢@DarrylG给出的列表理解答案,但是在本例中,您并不真正需要lambda表达式

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

data = [[car] + list(regions.values()) for car, regions in sorted(car_dict.items())]
我还要做一个小小的改变。如果您希望更明确地控制区域排序(或需要不同的排序),可以将
[car]+列表(regions.values())
替换为
[car,regions['usa'],regions['uk']]]
,如下所示:

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

当然,这意味着如果你添加了更多的区域,你将不得不改变这一点,但我更喜欢明确地设置顺序。

我喜欢@DarrylG给出的列表理解答案,但是在这种情况下,你并不真正需要lambda表达式

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

data = [[car] + list(regions.values()) for car, regions in sorted(car_dict.items())]
我还想做另一个小小的改变。如果您想要更明确地控制区域排序(或者想要不同的排序,您可以将
[car]+列表(regions.values())
替换为
[car,regions['usa'],regions['uk']]
,如下所示:

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

当然,这意味着如果您添加了更多的地区,您必须对此进行更改,但我更喜欢明确地设置顺序。

您的字典中没有您希望在示例中输出的数据。您是否可以更新显示奔驰、奥迪、宝马等数据的示例?您希望按车辆字符串(a-z)排序?嗨,现在我更新了。你能帮我吗@user13723838你得到了一些很好的答案。我建议你把其中一个标记为已接受来结束你的问题。你可以通过点击你选择的答案旁边的勾号来完成。你的字典没有你想要在你的示例中输出的数据。你能更新你的示例吗显示奔驰、奥迪、宝马等的数据?您希望按车辆字符串(a-z)排序?嗨,现在我更新了。你能帮我吗@user13723838你得到了一些好的答案。我建议你把其中一个标记为已接受来结束你的问题。你可以通过点击你选择的答案旁边的勾号来完成。我正在寻找打印数据我正在寻找打印数据我喜欢在这里使用列表理解。如果您希望对区域排序有更明确的控制(或者想要不同的排序,您可以将
[car]+列表(regions.values())
替换为
[car,regions['usa'],regions['uk']]]
我喜欢在这里使用列表理解。如果您希望对区域排序有更明确的控制(或者需要不同的订购,您可以将
[car]+列表(regions.values())
替换为
[car,regions['usa'],regions['uk']]