【发布时间】:2014-01-24 04:03:23
【问题描述】:
在比较 2 个列表中的元素时,我正在尝试创建一个值为“True”或“False”的字典。这可能有点基本,但我是编码新手,我不明白为什么它总是分配“真”值,即使我可以看到它不是真的:
letters = [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z]
randomData = []
f = open('randomData.txt', 'r')
for line in f:
randomData.append(line.rstrip().split()[0])
f.close()
“randomData.txt”文件如下所示:
A'\t'0003'\t'0025'\t'chr1
B'\t'0011'\t'0021'\t'chr7
D'\t'0043'\t'0068'\t'chr3
F'\t'0101'\t'0119'\t'chr7
randomData 列表现在应该如下所示:
['A','B','D','F']
我试过了:
sameLetters = {}
i=0
while i < len(letters):
if letters[i] and randomData:
#append to dictionary
sameLetters[letters[i]] = 'True'
else:
#append to dictionary
sameLetters[letters[i]] = 'False'
i=i+1
print sameLetters
我期待的是这样的:
{'A': 'True', 'B': 'True', 'C': 'False', 'D': 'True', 'E': 'False', 'F': 'True', 'G': 'False', etc
相反,字典中的所有值都是“真”。任何人都可以看到问题吗?或者给出任何指示或解释?任何帮助都会很棒,非常感谢。
【问题讨论】:
-
既然可以使用
True和False,为什么还要使用“True”和“False”? -
如果您的行确实包含
A'\t'0003'\t'0025'\t'chr1,那么您的randomData列表将改为["A'", "B'", "C'"],例如一个字母和一个引号字符。 -
好吧,因为 randomData 和 letters[i] 都不是 null,所以都返回 true。
-
忘记了这篇文章中“字母”周围的“”标记,但它们出现在我的脚本中
标签: python list dictionary boolean