【问题标题】:How to access a specific value in a list within a dictionary? [duplicate]如何访问字典中列表中的特定值? [复制]
【发布时间】:2021-12-07 16:30:18
【问题描述】:
upatients = {
    'Junipero':[ 37, 114, 'M', 'I', 6, 2],
    'Sunita':[22, 27, 'F', 'B', 9, 5],
    'Issur':[ 38, 48, 'D', 'W', 4, 1],
    'Luitgard':[ 20, 105, 'M', 'L', 1, 4],
    'Rudy':[ 20, 27, 'D', 'O', 9, 5],
    'Ioudith':[ 19, 93, 'D', 'I', 4, 3]
}

for key in upatients:
    patients = key
    print(patients)

我正在尝试访问列表中[5] 位置的值,并根据这些值对列表进行排序。我无法打印这些值。

【问题讨论】:

  • 您要对哪个列表进行排序?
  • 在第一个循环之后,patients 只是upatients 中的最后一个键。这不是一个列表。
  • @Barmar 我正在尝试根据分配给字典键的列表的 [5] 值对患者姓名进行排序。
  • 您可能需要注释掉/删除带有第二个for 循环的行。
  • @PM77-1 缩进有什么问题?第二个循环不打算嵌套。

标签: python list dictionary


【解决方案1】:

使用sorted()key 选项在排序时使用值的元素。

def sort_dict_keys(d, index):
    return sorted(d, key = lambda p: d[p][index])

print(sort_dict_keys(upatients, 5))

【讨论】:

  • 谢谢。你会如何把它变成一个函数?只是为了让我变得灵活
  • 我更新了答案。
  • 如果我愿意,我将如何按另一个索引对结果进行排序?
  • 索引是函数的参数,所以可以按任意索引排序。
【解决方案2】:

要在每个列表的第 5 个索引处打印项目,您可以使用:

for key in upatients:
    patients = upatients[key]
    print(patients[5])

这是获取患者排序列表的一种方法:

tmp = [(upatients[key][5], key) for key in upatients]
sort(tmp)
new_list = [x[1] for x in tmp]
print(new_list)

输出:

['Issur', 'Junipero', 'Ioudith', 'Luitgard', 'Rudy', 'Sunita']

【讨论】:

    猜你喜欢
    • 2012-12-31
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 2018-08-30
    相关资源
    最近更新 更多