首页 > 解决方案 > 如何返回字典列表中字符串最长的对象?(Python)

问题描述

知道如何在以下示例中返回名称最长的对象吗?

def instructorWithLongestName(instructors):

    instructors = [ 
      {'name': "Samuel", 'course': "iOS"},
      {'name': "Jeremiah", 'course': "Data"},
      {'name': "Ophilia", 'course': "Web"},
      {'name': "Donald", 'course': "Web"}
      {'name': "Matthew", 'course': "Data"},
      {'name': "David", 'course': "iOS"},
      {'name': "Domascus", 'course': "Web"}
    ]
    
    max_len = -1
    for name in instructors:
        if len(name) > max_len:
            max_len = len(name)
            res = name


print(instructorWithLongestName([
  {name: "Samuel", course: "iOS"},
  {name: "Jeremiah", course: "Data"},
  {name: "Ophilia", course: "Web"},
  {name: "Donald", course: "Web"}
]))
print(instructorWithLongestName([
  {name: "Matthew", course: "Data"},
  {name: "David", course: "iOS"},
  {name: "Domascus", course: "Web"}
]))

这应该是预期的输出:

    {name: "Jeremiah", course: "Data"}
    {name: "Domascus", course: "Web"}

我的讲师列表中出现了 SyntaxError,但希望这能解决问题。显然不是。任何帮助将不胜感激 - 谢谢。

标签: pythonlistdictionary

解决方案


def instructorWithLongestname(instructors):
    return max(instructors, key=lambda d:len(d['name']))

print(instructorWithLongestname([
  {'name': "Samuel", 'course': "iOS"},
  {'name': "Jeremiah", 'course': "Data"},
  {'name': "Ophilia", 'course': "Web"},
  {'name': "Donald", 'course': "Web"}
]))
print(instructorWithLongestname([
  {'name': "Matthew", 'course': "Data"},
  {'name': "David", 'course': "iOS"},
  {'name': "Domascus", 'course': "Web"}
]))

印刷

{'name': 'Jeremiah', 'course': 'Data'}
{'name': 'Domascus', 'course': 'Web'}

推荐阅读