我在理解这里发生的事情时遇到了问题。
networkfile="http://regulondb.ccg.unam.mx/menu/download/datasets/files/network_tf_gene.txt"
i = 36
lista = []
for n in range(0,8):
data = urllib.request.urlopen(networkfile).readlines()[i]
line = data.decode('utf-8')
line2 = line[0:5]
lista.append(line2)
i = i + 1
print(lista)
values = []
for i in range(0,8):
values.append('')
print(values)
d = dict(zip(lista,values))
print(d)
我知道这远不是解决此类问题的最有效方法,但我对此非常陌生,所以现在我们必须这样做。
我的问题是输出如下:
'AccB\t', 'AccB\t', 'AcrR\t', 'AcrR\t', 'AcrR\t', 'AcrR\t', 'AcrR\t', 'AcrR\t']
['', '', '', '', '', '', '', '']
{'AccB\t': '', 'AcrR\t': ''}
前两个列表正常工作,正如print-command所暗示的那样,但是只要我将这两个列表压缩并创建它们的字典,字典就只包含每个列表中的两个元素,我不知道甚至在我试图找出几个小时之后,为什么会这样。
任何其他提示&改进建议也非常受欢迎。感谢。
答案 0 :(得分:0)
我建议将代码分解为逻辑步骤,而不是在同一行中执行多个步骤。然后,您会发现zip
并未向您提供两个项目,dict
。
lista = ['AccB\t', 'AccB\t', 'AcrR\t', 'AcrR\t', 'AcrR\t', 'AcrR\t', 'AcrR\t', 'AcrR\t']
values = ['', '', '', '', '', '', '', '']
>>> list(zip(lista, values))
[('AccB\t', ''), ('AccB\t', ''), ('AcrR\t', ''), ('AcrR\t', ''), ('AcrR\t', ''), ('AcrR\t', ''), ('AcrR\t', ''), ('AcrR\t', '')]
所以你看,你获得了所有预期的价值。但是当你将它放入字典时,你有许多相同的键,所以它们会被覆盖。字典只能给出每个键中的一个。
>>> dict(_)
{'AcrR\t': '', 'AccB\t': ''}
'AcrR\t'
和'AccB\t'
是唯一的两个键,因此在字典中,每个键都会显示一次。