在Python中,当值是列表时,如何遍历字典的值?

时间:2013-12-03 09:37:34

标签: python list loops csv dictionary

我有一本字典,它有点复杂所以我会做一个样本:

final = {x: [-.5, 1], y: [.75, 2], z: [.25, 3]}

使用字典“genes”,我需要循环遍历与每个键相关的列表,并且:

  1. 如果列表中的第二个值超过给定输入(我称之为p),则在列表中附加0;如果小于p,则为1。

  2. 如果第一个值为负数,我需要将附加数字乘以-1以使其成为负数。

  3. 这是我现在的代码(运行python 2.7):

    for k, v in final.iterkeys():
        if v[1] <= p:
            v.append("1")
        else:
            v.append("0")
        if v[0] < 0:
            v[2] *= -1
    

    之后,我只将密钥(本例中为x,y和z)和附加数字写入csv文件。如果你想知道的话,这是我的代码:

    writer = csv.writer(open("result.csv", "wb"))
    for k, v in final.iteritems():
        writer.writerow([k, v[2]])
    

    据我所知,该部分有效。但我可能是错的,而我的错误确实存在

    p = 2的预期输出,如最终输出的csv文件,如下所示:

    x, -1
    y, 1
    z, 0
    

    相反,我只是

    x, 0
    y, 0
    z, 0
    

    知道发生了什么事吗?我是编程和python的新手,所以任何帮助都表示赞赏!

1 个答案:

答案 0 :(得分:1)

问题是您要附加字符串“0”或“1”,然后将其乘以-1。尝试附加整数0或1,乘以,并将最终值转换为字符串。

for v in final.itervalues():
    if v[1] <= p:
        v.append(1)
    else:
        v.append(0)
    if v[0] < 0:
        v[2] *= -1