我有一本字典,它有点复杂所以我会做一个样本:
final = {x: [-.5, 1], y: [.75, 2], z: [.25, 3]}
使用字典“genes”,我需要循环遍历与每个键相关的列表,并且:
如果列表中的第二个值超过给定输入(我称之为p),则在列表中附加0;如果小于p,则为1。
如果第一个值为负数,我需要将附加数字乘以-1以使其成为负数。
这是我现在的代码(运行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的新手,所以任何帮助都表示赞赏!
答案 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