2016-12-14 54 views
1

我有一個像下面顯示的字典結構,我想從中提取"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(例如,('Dummy', 'EV=5.0', -5.0, -5.0, -5.0)。

換句話說,我知道我想要檢索的信息的位置。存在於位置的所有子keys 1.

我想出了兩種方法可以做到這一點,但我想他們都沒有:

# 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 

整個字典轉換爲字符串並seraching爲"EV="也發生在我但這是我在很長一段時間以來最醜陋的想法。

有沒有更好的方法,我失蹤了?

+0

怎麼樣'[數據[1]鍵my_dict.values()在關鍵數據]'? – styvane

+0

實際字典比這裏顯示的示例長很多,所以你的列表理解不會很有效。但如果再加上'next',我們可能會去某個地方 –

+0

'next'只會返回第一個值。我不知道這是你想要的,這就是爲什麼我發表評論。 – styvane

回答

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' 
+0

我認爲這是一樣好,它會得到。謝謝! –