在字典内的列表中找到元素的索引值

时间:2019-05-29 17:41:20

标签: python python-3.x

我需要使用字典的值而不是索引来访问字典中某个数组的某些值

例如:

message_dict = {
  '123456,896': 
      [[3453, 57634], [9984, 97585]], 
  '157384,899':
      [[3455, 57647], [9989, 97592]]
}

如果我要访问57634,可以执行以下操作:

s = '123456,896'
message_dict[s][0][1]

我想使用[0]的值来查找57634

我试图直接指定该值,但是语法无效。

s = '123456,896'
i = 3453
message_dict[s]i[1]

这报告语法错误,但我不知道如何指定值,而不是值在数组中的位置。

2 个答案:

答案 0 :(得分:1)

这里是一个解决方案:

next((x[1] for x in message_dict[s] if x[0] == i), None)

给出None(如果找不到值)。

答案 1 :(得分:0)

在子列表中,您要将第一项视为,将第二项视为 value 。成对的列表不太适合于此,因为它需要线性搜索,请改用嵌套的dict

message_dict = {
  '123456,896':
      {3453: 57634, 9984: 97585},
  '157384,899':
      {3455: 57647, 9989: 97592}
}

print(message_dict['123456,896'][3453])

输出

57634

如果您无法在源头更改message_dict的格式,请按照以下方法进行转换。

message_dict = {
  '123456,896':
      [[3453, 57634], [9984, 97585]],
  '157384,899':
      [[3455, 57647], [9989, 97592]]
}

message_dict = {k: dict(lst) for k, lst in message_dict.items()}

print(message_dict)

输出

{'123456,896': {3453: 57634, 9984: 97585},
 '157384,899': {3455: 57647, 9989: 97592}}