迭代Python中字典中的特定列

时间:2016-11-10 19:34:28

标签: python dictionary

我试图在字典中迭代第二列(第一个索引),类似于:

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"),
    }

并重新获得最大值。我所拥有的是:

    for c in dict[1:2]:

    x = 0

    if c > x:

        x = c

return x

我收到了一个不可用的类型错误。我知道它与代码如何迭代字典有关,但我仍然坚持如何解决它。语言是Python。这有什么不对?非常感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

您是否尝试使用dict.iteritems()迭代键值对?

例如:

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

答案 1 :(得分:0)

1:2是一个切片对象,它是不可取的,你想要的是这样的:

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

答案 2 :(得分:0)

首先,使用保留名称(如dict)停止变量

其次,通过编写mydict [1:2],您可以从字典中请求引用具有键1:2的元素的值,这是切片运算符。    现在切片运算符不能是字典中的键(没有哈希函数接受运算符并返回一个数值,该值在values数组中用作索引)。    因此,您应该在键列表和值列表上使用切片运算符,或者在项目列表上使用 - 具有顺序的列表,并且在它们上面有切片是有意义的(字典不保证具有相同的顺序在它改变之后)

第三,为什么在for循环的每次迭代中都将x设置为0?

第四,你可以这样做:

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