2016-11-10 103 views
0

在字典中的特定列我想遍歷在字典中類似的第二列(第一index)來:遍歷在Python

dict = { 
"Me": [("Blue", 37, 1, 2, "up", "left")], 
"You": [("Green", 03, 3, 4, "up", "right"), 
    ("Red", 29, 5, 6, "down", "right"), 
    ("Yellow", 35, 7, 8, "straight", "down")], 
"Them": [("Black", 08, 9, 10, "up", "up"), 
    } 

和retrun最大的價值。我有什麼是:

for c in dict[1:2]: 

    x = 0 

    if c > x: 

     x = c 

return x 

我得到一個不可能的類型錯誤。我知道它與代碼如何遍歷字典有關,但我堅持如何解決它。語言是Python。這裏有什麼問題?任何幫助是極大的讚賞!

+0

'dict's沒有序列,你不能索引他們,你當然不能切片他們。就此而言,他們沒有「專欄」。 –

回答

0

您是否嘗試過使用dict.iteritems()遍歷鍵值對?

例如:

for key, val in dic.iteritems(): 
    print "Key: " + str(key) + "\t Value:" + str(val) 
0

1:2是切片對象,這是unhashable,你要代替的是這樣的:對於

max(d[1] for l in dict.values() for d in l) 
0

首先,停止使用保留的名稱(如字典)你的變量

第二,通過編寫mydict [1:2],你可以從字典中請求引用元素的鍵值爲1:2的元素,這是片段操作河 現在,切片運算符不能是字典中的鍵(不存在使用運算符並返回數值的散列函數,該數值用作值數組中的索引)。 所以,你應該在鍵列表和值列表上使用slice操作符,或者在項目列表上使用slice操作符 - 列表中有順序的列表,並且在它們上有切片是有意義的(詞典不保證具有相同的訂單發生變化後)

第三,爲什麼在for循環的每次迭代中將x設置爲0?

;第四,你可以這樣做:

for value in mydict.values(): 
    (a, b, c, d, e, f) = value[0] 
    print(b)