擅长:python、mysql、java
<p>当然,@smonener的答案已经是正确的,使用<code>OrderedDict</code>这样的数据结构是个好主意,但是如果只想使用标准方法,可以尝试:</p>
<pre><code>from scipy.spatial import distance
# Load data from file
with open('datafile.txt') as datafile:
contents = [line.split() for line in datafile]
# Extract the xyz coordiantes, if there is an H in the last column
coords = []
for i, item in enumerate(contents):
if item[-1] == 'H':
coords.append([[float(x) for x in item[5:8]], i+1])
# Show results
for i in range(len(coords)):
for j in range(i+1, len(coords)):
dist = distance.euclidean(coords[i][0], coords[j][0])
print('({}, {}): {:.5f}'.format(coords[i][1], coords[j][1], dist))
</code></pre>