我有一个如下所示的字典结构,我想从中提取"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
进行搜索也发生在我身上,但是这是我长期以来最丑陋的想法。
我错过了更好的方法吗?
答案 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'