2016-11-10 177 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)