Skip to content

并行结果、部分失败与共享状态一致性:练习答案 ​

参考实现 ​

完整实现:

python
def merge(rows):
    output = {}
    for row in rows:
        if row["id"] in output and output[row["id"]] != row["text"]:
            raise ValueError("conflicting evidence")
        output[row["id"]] = row["text"]
    return sorted(output.items())
a = {"id":"a","text":"one"}
b = {"id":"b","text":"two"}
assert merge([a,b,a]) == merge([b,a]) == [("a","one"),("b","two")]
try: merge([a,{"id":"a","text":"changed"}])
except ValueError: pass
else: raise AssertionError("conflict lost")
print("deduplicated, not overwritten")

去重只合并同一证据的重复运输,不把两份独立来源合为一个来源。

返回正文

用心记录每一步成长