遍历前面有 b' 的列表

Traversing through a list that has b' ahead

写的时候

a1 = list([b'1,690569\n1,315892\n1,189226\n2,834328\n2,1615927\n2,1194519\n'])
print(a1)
for edge_ in a1:
    print('edge =' + str(edge_))
    z[(edge_[0], edge_[1])] = 1
    print('edge_0 =' + str(edge_[0]))
    print('edge_1 =' + str(edge_[1]))
    print(z)

我得到的输出为

[b'1,690569\n1,315892\n1,189226\n2,834328\n2,1615927\n2,1194519\n']
edge =b'1,690569\n1,315892\n1,189226\n2,834328\n2,1615927\n2,1194519\n'
edge_0 =49
edge_1 =44
{(49, 44): 1}

谁能解释一下为什么是49和44?这些值与列表中的元素无关。

首先,正如其他人已经提到的,您下面的数组是一个字节数组。由于开头的 'b' ,这一点很明显。顺便说一句,您不需要使用 'list()'。

a1 = [b'1,690569\n1,315892\n1,189226\n2,834328\n2,1615927\n2,1194519\n']

鉴于 z 是一个空字典(即 z = dict()) 下面只是添加一个元组作为键和一个整数作为值:

z[(edge_[0], edge_[1])] = 1

我们可以看到以下内容:

edge_ = a1[0] = b'1,690569\n1,315892\n1,189226\n2,834328\n2,1615927\n2,1194519\n'
edge_[0] = a1[0][0] = ord(b'1') = 49
edge_[1] = a1[0][1] = ord(b',') = 44

因此 z[(edge_[0], edge_[1])] = 1 变为:

z[(49, 44)] = 1
z = {(49, 44): 1}