Python—以特定的方式从字典中提取信息

Python—以特定的方式从字典中提取信息,python,dictionary,Python,Dictionary,我试图从字典中提取某些值,并以特定的方式显示它。我将在下面向您展示我的代码示例: dict = [{'Titel': 'Rush', 'Name': 'Floris', 'Starttime': '20:30', 'Email': 'Floris@email.com', 'Supplier': 'RTL8', 'Surname': 'Cake', 'Code': 'ABC123'}, {'Titel': 'Rush', 'Voornaam': 'Jaron', 'Starttime': '20

我试图从字典中提取某些值,并以特定的方式显示它。我将在下面向您展示我的代码示例:

dict = [{'Titel': 'Rush', 'Name': 'Floris', 'Starttime': '20:30', 'Email': 'Floris@email.com', 'Supplier': 'RTL8', 'Surname': 'Cake', 'Code': 'ABC123'},
 {'Titel': 'Rush', 'Voornaam': 'Jaron', 'Starttime': '20:30', 'Email': 'JaronPie@email.com', 'Supplier': 'RTL8', 'Surname': 'Pie', 'Code': 'XYZ123'},
 {'Titel': 'Underneath', 'Name': 'Klaas', 'Starttime': '04:00', 'Email': 'Klassieboy@gmail.com', 'Supplier': 'RTL8', 'Surname': 'Klassie', 'Code': 'fbhwuq8674'}]
那是我的字典。我想要的输出是:

Titel, Starttime,
Surname, Name, Email
所以看起来是这样的:

Rush, 20:30, 
Cake, Floris, Floris@email.com
Pie, Jaron, JaronPie@email.com

Underneath, 04:00,
Klassie, Klaas, Klassieboy@gmail.com
您可以使用它,您将获得所需的所有信息的
元组

def print_my_d(d):

     print(d[0]['Titel'], d[0]['Starttime'])
     for l in d[:2]:
         print(l['Surname'], l['Name'], l['Email'])
     print()
     print(d[2]['Titel'],d[2]['Starttime'])
     print("{}, {}, {}".format(d[2]['Surname'],d[2]['Name'], d[2]['Email']))


print_my_d(d)

Rush 20:30
Cake Floris Floris@email.com
Pie Jaron JaronPie@email.com

Underneath 04:00
Klassie, Klaas, Klassieboy@gmail.com

您可以使用它,您将获得所需的所有信息的
元组。

我使用了VKS的代码来构建它,谢谢VKS:p

def print_my_d(d):

     print(d[0]['Titel'], d[0]['Starttime'])
     for l in d[:2]:
         print(l['Surname'], l['Name'], l['Email'])
     print()
     print(d[2]['Titel'],d[2]['Starttime'])
     print("{}, {}, {}".format(d[2]['Surname'],d[2]['Name'], d[2]['Email']))


print_my_d(d)

Rush 20:30
Cake Floris Floris@email.com
Pie Jaron JaronPie@email.com

Underneath 04:00
Klassie, Klaas, Klassieboy@gmail.com
使用,以及

代码:

from itertools import groupby
k = [{'Titel': 'Rush', 'Name': 'Floris', 'Starttime': '20:30', 'Email':      'Floris@email.com', 'Supplier': 'RTL8', 'Surname': 'Cake', 'Code': 'ABC123'},
{'Titel': 'Rush', 'Voornaam': 'Jaron', 'Starttime': '20:30', 'Email': 'JaronPie@email.com', 'Supplier': 'RTL8', 'Surname': 'Pie', 'Code': 'XYZ123'},
{'Titel': 'Underneath', 'Name': 'Klaas', 'Starttime': '04:00', 'Email': 'Klassieboy@gmail.com', 'Supplier': 'RTL8', 'Surname': 'Klassie', 'Code': 'fbhwuq8674'}]

lst=[(i["Titel"],i["Starttime"],i["Surname"],i.get("Name","None"), i["Email"]) for i in k]
lst.sort(key=lambda x:(x[0],x[1]))
for key,groups in groupby(lst,key=lambda x:(x[0],x[1])):
    print "{}\t{}".format(key[0],key[1])
    for value in groups:
        print "{}\t{}\t{}".format(value[2],value[3],value[4])
    print ""
Rush    20:30
Cake    Floris  Floris@email.com
Pie     None    JaronPie@email.com

Underneath      04:00
Klassie Klaas   Klassieboy@gmail.com
输出:

from itertools import groupby
k = [{'Titel': 'Rush', 'Name': 'Floris', 'Starttime': '20:30', 'Email':      'Floris@email.com', 'Supplier': 'RTL8', 'Surname': 'Cake', 'Code': 'ABC123'},
{'Titel': 'Rush', 'Voornaam': 'Jaron', 'Starttime': '20:30', 'Email': 'JaronPie@email.com', 'Supplier': 'RTL8', 'Surname': 'Pie', 'Code': 'XYZ123'},
{'Titel': 'Underneath', 'Name': 'Klaas', 'Starttime': '04:00', 'Email': 'Klassieboy@gmail.com', 'Supplier': 'RTL8', 'Surname': 'Klassie', 'Code': 'fbhwuq8674'}]

lst=[(i["Titel"],i["Starttime"],i["Surname"],i.get("Name","None"), i["Email"]) for i in k]
lst.sort(key=lambda x:(x[0],x[1]))
for key,groups in groupby(lst,key=lambda x:(x[0],x[1])):
    print "{}\t{}".format(key[0],key[1])
    for value in groups:
        print "{}\t{}\t{}".format(value[2],value[3],value[4])
    print ""
Rush    20:30
Cake    Floris  Floris@email.com
Pie     None    JaronPie@email.com

Underneath      04:00
Klassie Klaas   Klassieboy@gmail.com

我使用VKS的代码来构建它,谢谢VKS:p

使用,以及

代码:

from itertools import groupby
k = [{'Titel': 'Rush', 'Name': 'Floris', 'Starttime': '20:30', 'Email':      'Floris@email.com', 'Supplier': 'RTL8', 'Surname': 'Cake', 'Code': 'ABC123'},
{'Titel': 'Rush', 'Voornaam': 'Jaron', 'Starttime': '20:30', 'Email': 'JaronPie@email.com', 'Supplier': 'RTL8', 'Surname': 'Pie', 'Code': 'XYZ123'},
{'Titel': 'Underneath', 'Name': 'Klaas', 'Starttime': '04:00', 'Email': 'Klassieboy@gmail.com', 'Supplier': 'RTL8', 'Surname': 'Klassie', 'Code': 'fbhwuq8674'}]

lst=[(i["Titel"],i["Starttime"],i["Surname"],i.get("Name","None"), i["Email"]) for i in k]
lst.sort(key=lambda x:(x[0],x[1]))
for key,groups in groupby(lst,key=lambda x:(x[0],x[1])):
    print "{}\t{}".format(key[0],key[1])
    for value in groups:
        print "{}\t{}\t{}".format(value[2],value[3],value[4])
    print ""
Rush    20:30
Cake    Floris  Floris@email.com
Pie     None    JaronPie@email.com

Underneath      04:00
Klassie Klaas   Klassieboy@gmail.com
输出:

from itertools import groupby
k = [{'Titel': 'Rush', 'Name': 'Floris', 'Starttime': '20:30', 'Email':      'Floris@email.com', 'Supplier': 'RTL8', 'Surname': 'Cake', 'Code': 'ABC123'},
{'Titel': 'Rush', 'Voornaam': 'Jaron', 'Starttime': '20:30', 'Email': 'JaronPie@email.com', 'Supplier': 'RTL8', 'Surname': 'Pie', 'Code': 'XYZ123'},
{'Titel': 'Underneath', 'Name': 'Klaas', 'Starttime': '04:00', 'Email': 'Klassieboy@gmail.com', 'Supplier': 'RTL8', 'Surname': 'Klassie', 'Code': 'fbhwuq8674'}]

lst=[(i["Titel"],i["Starttime"],i["Surname"],i.get("Name","None"), i["Email"]) for i in k]
lst.sort(key=lambda x:(x[0],x[1]))
for key,groups in groupby(lst,key=lambda x:(x[0],x[1])):
    print "{}\t{}".format(key[0],key[1])
    for value in groups:
        print "{}\t{}\t{}".format(value[2],value[3],value[4])
    print ""
Rush    20:30
Cake    Floris  Floris@email.com
Pie     None    JaronPie@email.com

Underneath      04:00
Klassie Klaas   Klassieboy@gmail.com


你知道dict键吗?是的,它们都是在CSV文件中定义的。它们都遵循相同的格式。Dict键是:'titel'、'name'、'starttime'、'email'、'supplier'、'姓氏'、'code'您还需要按滴度分组吗?我需要按滴度+时间分组。这不是一个字典,而是一个字典列表,字段应该是'Title'而不是'titel'您知道Dict键吗?是的,它们都是在CSV文件中定义的。它们都遵循相同的格式。Dict键是:'titel'、'name'、'starttime'、'email'、'supplier'、'姓氏'、'code'您是否也需要按滴度分组,我需要按滴度+时间分组。这不是一个字典,而是一个字典列表,而且字段应该是'Title'而不是'titel',而不是您回复@LetzerWille。你很接近,但这不是我想要的。我希望滴度+时间只打印一次,并且在dict中匹配该滴度的所有值都打印在下面。更改以反映您所做的更改need@LetzerWille还有一些东西missing@LetzerWille很乐意提供帮助,但如果示例案例发生变化,而不是三元素列表,则这将不起作用。用户可以获得一个元素列表,最好使用组by@VigneshKalai没错。但是,即使是键命名也可以更改。没有什么是永恒的。我想这是OP的玩具,而不是产品。同时,我会仔细看看你们的一般解决方案。。。我比你更喜欢回答“LetzerWille”。你很接近,但这不是我想要的。我希望滴度+时间只打印一次,并且在dict中匹配该滴度的所有值都打印在下面。更改以反映您所做的更改need@LetzerWille还有一些东西missing@LetzerWille很乐意提供帮助,但如果示例案例发生变化,而不是三元素列表,则这将不起作用。用户可以获得一个元素列表,最好使用组by@VigneshKalai没错。但是,即使是键命名也可以更改。没有什么是永恒的。我想这是OP的玩具,而不是产品。同时,我会仔细看看你们的一般解决方案。。。我喜欢……那个。。是非常漂亮的正是我需要的!非常感谢Vignesh。@Cake很乐意提供帮助,但一定要查看groupby和字符串格式,这对您很有用。您的意思是我应该查看该模块,以便将来使用它?如果是的话,我一定会的@蛋糕是的,我也添加了链接,如果你想提到。。是非常漂亮的正是我需要的!非常感谢Vignesh。@Cake很乐意提供帮助,但一定要查看groupby和字符串格式,这对您很有用。您的意思是我应该查看该模块,以便将来使用它?如果是的话,我一定会的@蛋糕是的,我也添加了链接,如果你想参考