<p>您可以解码,然后无需使用<code>b"5"</code>等来访问密钥:</p>
<pre><code>mydict = { k.decode("utf-8"):[v.decode("utf-8"), z.decode("utf-8")] for k,v,z in key_value}
In [46]: mydict
Out[46]: {'5': ['Akron', '875'], '8': ['Alabama', '911'], '9': ['UAB', '24312']}
In [47]: mydict["5"]
Out[47]: ['Akron', '875']
</code></pre>
<p>你可以正常打开它:</p>
^{pr2}$
<p>或使用csv模块:</p>
<pre><code>import csv
mydict = { }
with open('out.txt') as f:
next(f)
reader = csv.reader(f,delimiter=",")
for row in reader:
k,v,z = row
mydict[k] = [v,z]
print(mydict)
</code></pre>
<p>如果您希望数字为<code>ints</code>,请使用:</p>
<pre><code>mydict[int(k)]= [v,int(z)]
</code></pre>
<p>一些时间安排:</p>
<pre><code>In [39]: %%timeit
....: key_value = np.loadtxt(
....: 'team.csv',
....: delimiter=",",
....: skiprows = 1,
....: dtype = bytes
....: ).astype(str)
....: mydict = { k:[v, z] for k,v,z in key_value}
....:
10000 loops, best of 3: 123 µs per loop
In [40]:
In [40]: %%timeit
....: mydict = { }
....: with open('team.csv') as f:
....: next(f)
....: reader = csv.reader(f,delimiter=",")
....: for line in reader:
....: k,v,z = line
....: mydict[k]= [v,z]
....:
10000 loops, best of 3: 42.9 µs per loop
In [42]: %%timeit
mydict = { }
with open('team.csv')as f:
next(f) # skip header
for line in f:
k,v,z = line.rstrip().split(",")
mydict[k] = [v,z]
....:
10000 loops, best of 3: 37.6 µs per loop
</code></pre>
<p>使用150行的文件,numpy的效率要低得多:</p>
<pre><code>In [12]: %%timeit
....: key_value = np.loadtxt(
....: 'team.csv',
....: delimiter=",",
....: skiprows = 1,
....: dtype = bytes
....: ).astype(str)
....: mydict = { k:[v, z] for k,v,z in key_value}
....:
100 loops, best of 3: 2.01 ms per loop
In [13]: %%timeit
....: mydict = { }
....: with open('team.csv')as f:
....: next(f) # skip header
....: for line in f:
....: k,v,z = line.rstrip().split(",")
....: mydict[k] = [v,z]
....:
10000 loops, best of 3: 165 µs per loop
</code></pre>