在不使用密钥

时间:2016-12-14 10:21:53

标签: python python-3.x dictionary

我有一个如下所示的字典结构,我想从中提取"EV=5.0"部分。只是第一个实例。

my_dict = {('zone1', 'pcomp100002', '33x75'): {('Dummy', 'EV=5.0', -5.0, -5.0, -5.0): 68.49582}, ('zone1', 'pcomp100004', '33x75'): {('Dummy', 'EV=5.0', -5.0, -5.0, -5.0): 37.59079}}

请注意,我唯一知道的是dict的结构,而不是实际的主keys(例如('zone1', 'pcomp100002', '33x75'))或子keys(例如{ {1}})。

换句话说,我知道要检索的信息的位置。出现在位置1的所有子('Dummy', 'EV=5.0', -5.0, -5.0, -5.0中。

我想出了两种方法,但我不喜欢它们:

keys

将整个字典转换为字符串并为# method 1 - unreadable print(list(list(my_dict.values())[0].keys())[0][1]) # method 2 - two loops broken in their first iteration for i in a.values(): for j in i: print(j[1]) break break 进行搜索也发生在我身上,但是这是我长期以来最丑陋的想法。

我错过了更好的方法吗?

1 个答案:

答案 0 :(得分:3)

您可以将版本2转换为生成器表达式并使用next

>>> my_dict = {('zone1', 'pcomp100002', '33x75'): {('Dummy', 'EV=5.0', -5.0, -5.0, -5.0): 68.49582}, ('zone1', 'pcomp100004', '33x75'): {('Dummy', 'EV=5.0', -5.0, -5.0, -5.0): 37.59079}}
>>> next(k[1] for v in my_dict.values() for k in v)
'EV=5.0'