从词典列表中联合所有键

Joe*_*ult 2 python dictionary list

说我有一个词典列表.它们在每行中大多数具有相同的键,但有一些不匹配并且具有额外的键/值对.有没有快速的方法来获取所有行中的所有键的集合?

现在我正在使用这个循环:

def get_all_keys(dictlist):
    keys = set()
    for row in dictlist:
        keys = keys.union(row.keys())
Run Code Online (Sandbox Code Playgroud)

在具有数十万行的列表上执行此操作似乎非常低效,但我不确定如何更好地执行此操作

谢谢!

Jon*_*nts 10

你可以尝试:

def all_keys(dictlist):
    return set().union(*dictlist)
Run Code Online (Sandbox Code Playgroud)

避免导入,并将充分利用其底层实现set.也可以使用任何可迭代的东西.

  • 当然......```将列表解压缩到[set.union](http://docs.python.org/2/library/stdtypes.html#set.union)的单独参数中,这些参数可以采用任意数量的可迭代arguments ...(所以上面的调用实际上是set().union(first_dict,second_dict,third_dict,fourth_dict ...)所以对于列表中的每个对象,它会尝试迭代它(在一个`的情况下) dict`是它的键,或列表/元组的项目,或字符串的字符....等...) (3认同)