按值转换和格式化 Python 中的字典列表
convert and format list of dictionaries in Pyton by values
希望有人能帮我查字典:
data = [
{
"firstname" : "David",
"lastname" : "Brown",
"class" : [ "economy" ]
},
{
"firstname" : "Alina",
"lastname" : "Hoper",
"class" : [ "economy", "business" ]
},
{
"firstname" : "Bill",
"lastname" : "Flow",
"class" : [ "business" ]
},
{
"firstname" : "James",
"lastname" : "Frank",
"class" : [ "economy" ]
}
]
作为输出,我需要查看谁购买了经济,谁购买了商业 class:
排序 = 按 class 升序,在 class 内按名字升序。所以商业是第一位的,然后是经济。 Alina 在两个 classes 中都排名第一,因为她买了两个 classes。
business: Alina Hoper, Bill Flow, ...
economy: Alina Hoper, David Brown, ...
我尝试编写函数,但现在无法理解从哪里开始排序以及如何通过 class:
转换字典和分组数据
def analyze(customers_data):
data = ""
data += "{} {} \n".format(customers_data["firstname"], customers_data["lastname"])
data += "{} \n".format(customers_data["aff"])
return data
for d in orders:
print(analyze(d))
希望有人能帮忙
您应该首先获取 economy/business 客户的列表,然后打印这些列表中的姓名:
data = [
{
"firstname" : "David",
"lastname" : "Brown",
"class" : [ "economy" ]
},
{
"firstname" : "Alina",
"lastname" : "Hoper",
"class" : [ "economy", "business" ]
},
{
"firstname" : "Bill",
"lastname" : "Flow",
"class" : [ "business" ]
},
{
"firstname" : "James",
"lastname" : "Frank",
"class" : [ "economy" ]
}
]
business_custom = [dic for dic in data if "business" in dic["class"]]
eco_custom = [dic for dic in data if "economy" in dic["class"]]
business_names = ', '.join(sorted([f"{dic['firstname']} {dic['lastname']}" for dic in business_custom]))
economy_names = ', '.join(sorted([f"{dic['firstname']} {dic['lastname']}" for dic in eco_custom]))
print(f"business: {business_names}")
print(f"economy: {economy_names}")
输出:
business : Alina Hoper, Bill Flow
economy : Alina Hoper, David Brown, James Frank
编辑:如果您事先不知道 class 个名称,您可以创建一组 classes:
class_set = set()
for dic in data:
for c in dic['class']:
class_set.add(c)
for c in sorted(list(class_set)):
custom = [dic for dic in data if c in dic["class"]]
names = ', '.join(sorted([f"{dic['firstname']} {dic['lastname']}" for dic in custom]))
print(f"{c}: {names}")
希望有人能帮我查字典:
data = [
{
"firstname" : "David",
"lastname" : "Brown",
"class" : [ "economy" ]
},
{
"firstname" : "Alina",
"lastname" : "Hoper",
"class" : [ "economy", "business" ]
},
{
"firstname" : "Bill",
"lastname" : "Flow",
"class" : [ "business" ]
},
{
"firstname" : "James",
"lastname" : "Frank",
"class" : [ "economy" ]
}
]
作为输出,我需要查看谁购买了经济,谁购买了商业 class: 排序 = 按 class 升序,在 class 内按名字升序。所以商业是第一位的,然后是经济。 Alina 在两个 classes 中都排名第一,因为她买了两个 classes。
business: Alina Hoper, Bill Flow, ...
economy: Alina Hoper, David Brown, ...
我尝试编写函数,但现在无法理解从哪里开始排序以及如何通过 class:
转换字典和分组数据def analyze(customers_data):
data = ""
data += "{} {} \n".format(customers_data["firstname"], customers_data["lastname"])
data += "{} \n".format(customers_data["aff"])
return data
for d in orders:
print(analyze(d))
希望有人能帮忙
您应该首先获取 economy/business 客户的列表,然后打印这些列表中的姓名:
data = [
{
"firstname" : "David",
"lastname" : "Brown",
"class" : [ "economy" ]
},
{
"firstname" : "Alina",
"lastname" : "Hoper",
"class" : [ "economy", "business" ]
},
{
"firstname" : "Bill",
"lastname" : "Flow",
"class" : [ "business" ]
},
{
"firstname" : "James",
"lastname" : "Frank",
"class" : [ "economy" ]
}
]
business_custom = [dic for dic in data if "business" in dic["class"]]
eco_custom = [dic for dic in data if "economy" in dic["class"]]
business_names = ', '.join(sorted([f"{dic['firstname']} {dic['lastname']}" for dic in business_custom]))
economy_names = ', '.join(sorted([f"{dic['firstname']} {dic['lastname']}" for dic in eco_custom]))
print(f"business: {business_names}")
print(f"economy: {economy_names}")
输出:
business : Alina Hoper, Bill Flow
economy : Alina Hoper, David Brown, James Frank
编辑:如果您事先不知道 class 个名称,您可以创建一组 classes:
class_set = set()
for dic in data:
for c in dic['class']:
class_set.add(c)
for c in sorted(list(class_set)):
custom = [dic for dic in data if c in dic["class"]]
names = ', '.join(sorted([f"{dic['firstname']} {dic['lastname']}" for dic in custom]))
print(f"{c}: {names}")