-2

(ほぼ) 任意の辞書を統一するための公正なアルゴリズムはありますか? つまり、口述を考えると

a = {1: 1, 2: 2, 3: [1,2,3]}
b = {4: 4, 3: [5], 5: {'a': 0, 'b': {}}
c = {3: [{'A': '0'}], 5: {'b': {'B': 1}}}

unify (a, b, c)

収量

{1: 1, 
 2: 2, 
 3: [1, 2, 3, 5, {'A': '0'}], 
 4: 4,     
 5: {'a': 0, 'b': {'B': 1}}
}

私は一般的な解決策を求め続けています。私は年に数回、一般的な解決策を探してしまいますが、見つけられません ( Google なし、統合から統合、統合から統合は同じ言葉ではありません! )。Prolog のプログラミングが人生の奇妙な見方につながることはよく知っていますが、どうすれば再帰的な dict/key/value-store を持ち、統合を持たないことができるのでしょうか?

私は過去に順序付け、したがってリストが必要でしたが、当時は一般的なバージョンではなくハードコーディングに行き着きました。今回は、実際にはセット/リストの統一はまったく必要ありません。フォールバックは、キーが何であるかを事前に知っているため、もう一度ハードコードすることです。しかし: 一般的な解決策が既に存在していれば、何度も車輪を再発明する必要はありません。それをしなければならないのは間違っています。

__unify__本当にpythonicな解決策は、おそらく統合できるすべてのものの -method から始まるでしょう。それは基本的なことです。

4

2 に答える 2

0

ゾディアックが述べたように、直接的な問題なしに答えることは困難です。ただし、解決策を試します。

#Merge Lists of Dictionaries Functions
def merge_lists(l1, l2, key):
    merged = {}
    for item in l1+l2:
        if item[key] not in merged:
            merged[item[key]] = item
    return [val for (_, val) in merged.items()]

これがどのように機能するか教えてください

于 2013-05-22T14:07:38.447 に答える