-2

是否有人有统一(几乎)任意字典的公平算法?也就是说,给定 dicts

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}}
}

我一直想要一个通用的解决方案。我一年几次寻找一个通用的解决方案,但没有找到一个(没有谷歌,从统一统一和从联合统一不是同一个词!),我一直推迟自己写一个。我非常清楚,编程 Prolog 会导致对生活的奇怪看法,但是,嘿,一个递归的 dict/key/value-store 怎么可能没有统一呢?

我过去需要订购,因此需要列表,然后我最终没有选择通用版本,而是硬编码。这一次我实际上根本不需要集合/列表的统一,回退是再次硬编码,因为我知道键可以提前是什么。但是:如果那里已经有一个通用的解决方案,我就不必一次又一次地重新发明轮子。必须这样做是错误的。

真正的 Pythonic 解决方案可能会从__unify__所有可以统一的事物上的 -method 开始,这是基本的。

4

2 回答 2

0

如果您不知道如何遍历字典,请使用 for 循环遍历键:

>>> for i in {1: "abc"}: print i
1

正如评论所说,请指定您面临的问题,而不是要求 SO 为您编写代码。

于 2013-05-21T14:48:17.830 回答
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 回答