【问题标题】:Python - How can i print a certain dictionary field from many dictionaries within a list?Python - 如何从列表中的许多字典中打印某个字典字段?
【发布时间】:2016-10-15 19:26:07
【问题描述】:

我目前正在制作一个猜猜谁喜欢学校作业的游戏,但我似乎无法让它发挥作用。我想要做的是从列表中的所有字典中打印字段“名称”。

 Greg = {"Name":"Greg", "HairLength":"Short", "HairColour":"Brown", "FacialHair":"Yes", "Jewellery":"Yes", "Hat":"No", "Lipstick":"No", "Gender":"Male"}

 Chris = {"Name":"Chris", "HairLength":"Long", "HairColour":"Blonde", "FacialHair":"No", "Jewellery":"No","Hat":"Yes", "Lipstick":"Yes", "Gender":"Male"}

 Jason = {"Name":"Jason", "HairLength":"Short", "HairColour":"Brown", "FacialHair":"Yes", "Jewellery":"No","Hat":"Yes", "Lipstick":"No", "Gender":"Male"}

 Clancy = {"Name":"Clancy", "HairLength":"Bald", "HairColour":"Red", "FacialHair":"Yes", "Jewellery":"No", "Hat":"No","Lipstick":"No", "Gender":"Male"}

 Betty = {"Name":"Betty", "HairLength":"Short", "HairColour":"Blonde", "FacialHair":"No", "Jewellery":"Yes","Hat":"Yes", "Lipstick":"Yes", "Gender":"Female"}

 Helen = {"Name":"Helen", "HairLength":"Short", "HairColour":"Brown", "FacialHair":"No", "Jewellery":"No", "Hat":"No","Lipstick":"Yes", "Gender":"Female"}

 Selena = {"Name":"Selena", "HairLength":"Long", "HairColour":"Brown", "FacialHair":"No", "Jewellery":"Yes","Hat":"No", "Lipstick":"No", "Gender":"Female"}

 Jacqueline = {"Name":"Jacqueline", "HairLength":"Long", "HairColour":"Red", "FacialHair":"Yes", "Jewellery":"Yes", "Hat":"No","Lipstick":"No", "Gender":"Female"}


AISuspects = ([Greg, Chris, Jason, Clancy, Betty, Selena, Helen,
Jacqueline])
UserSuspects = ([Greg, Chris, Jason, Clancy, Betty, Selena, Helen, Jacqueline])

print("AISuspects:")
#Here i want it to print the field "Name" in every dictionary within the list AISuspects 


print("UserSuspects:")
#Here i want it to print the field "Name" in every dictionary within the list UserSuspects

求解后的预期输出和当前输出:

人工智能嫌疑人: [“格雷格”、“克里斯”、“杰森”、“克兰西”、“贝蒂”、“赛琳娜”、“海伦”、“杰奎琳”]

用户怀疑: [“格雷格”、“克里斯”、“杰森”、“克兰西”、“贝蒂”、“赛琳娜”、“海伦”、“杰奎琳”]

【问题讨论】:

  • 您的AISuspectsUserSuspects 列表不需要括号()。只需使用 [] 创建列表就足够了。

标签: python list dictionary printing output


【解决方案1】:

您可以使用列表推导来获取所有嫌疑人姓名的列表

suspects_names = [suspect['Name'] for suspect in AISuspects]

那么你可以使用print(' '.join(suspect_names))

如果您不介意在新行中打印每个名称,只需使用 for 循环:

for suspect in AISuspects:
    print(suspect['Name'])

注意列表定义周围的括号,你不需要它们,它们通常用于定义元组,所以我会去掉它们

【讨论】:

  • 我有点困惑,您能否扩展一下,而不是知道它为什么有效,而不是仅仅知道它有效,我可以继续……谢谢
  • @ComputerExpert69 你能具体说明你对哪一部分感到困惑吗?我认为使用推导式提供的第一个解决方案是您可能还没有学过的东西。第二个解决方案对您来说可能看起来更熟悉。
  • 哦,对不起,我没有意识到你编辑了你的帖子,是的,我明白第二个解决方案,谢谢!
  • @ComputerExpert69 如果此解决方案对您有所帮助,请确保将其标记为已接受(此答案旁边的复选标记)。
  • 不,当然没有不好的感觉。你是完全正确的,这对未来的读者来说是一个更好的解决方案,那是我的错。
【解决方案2】:
UserSuspects = [Greg['Name'], Chris['Name'],Jason['Name'], Clancy['Name'], Betty['Name'], Selena['Name'], Helen['Name'], Jacqueline['Name']]


print UserSuspects

【讨论】:

  • 这是一个更简单的解决方案,我从其他解决方案中得到了错误,所以我将为您提供这个问题的解决方案;)
  • 接受这个解决方案没有任何意义@ComputerExpert69 当另一个显然是这里更好的解决方案和解决这个问题的方法。
  • 究竟如何是“更好”的解决方案? @idjaw
  • @ComputerExpert69 如果您还需要一个名为John 的新嫌疑人怎么办?或者可能还有 200 多个?它如何回答您“如何从列表中的许多词典中打印某个词典字段?”的问题
  • @Andras Deak,你是对的,他的解决方案“更好”,它不是那么简单,但它的编码肯定更好
猜你喜欢
  • 2017-08-20
  • 2017-04-26
  • 1970-01-01
  • 2013-02-16
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 2023-01-10
相关资源
最近更新 更多