您可以使用此作为基础(而不是把'11 0.24' 为一个浮点数,我想你想适应几小时/分钟或分钟/秒)...你可以使用defaultdict
有效地结合并减去匹配键。
只要你可以得到你的数据转换成这样的格式:
f1 = [
[11.24, 1],
[11.26, 2],
[11.27, 3],
[11.29, 5],
[11.30, 6]
]
f2 = [
[11.25, 1],
[11.26, 3],
[11.27, 4],
[11.31, 6],
[11.32, 7],
[11.33, 8]
]
然后:
from collections import defaultdict
from itertools import chain
dd = defaultdict(float)
for k, v in chain(
((b, a) for a, b in f1),
((b, -a) for a, b in f2)): # negate a
dd[k] += v
结果:
{1: -0.009999999999999787,
2: 11.26,
3: 0.009999999999999787,
4: -11.27,
5: 11.29,
6: -0.009999999999999787,
7: -11.32,
8: -11.33}
对于比赛只
个
matches = dict((k, v) for v, k in f1)
d2 = dict((k, v) for v, k in f2)
for k, v in matches.items():
try:
matches[k] = v - d2[k]
except KeyError as e:
del matches[k]
print matches
# {1: -0.009999999999999787, 3: 0.009999999999999787, 6: -0.009999999999999787}
这个特定情况下的输出应该如何? – eumiro 2012-07-20 10:36:17