我想在(等长)列表字典之间来回切换:DL = {'a': [0, 1], 'b': [2, 3]} 和字典列表:LD = [{'a': 0, 'b': 2}, {'a': 1, 'b': 3}]
我想在(等长)列表的字典之间来回切换:
DL = {'a': [0, 1], 'b': [2, 3]}
以及一个字典列表:
LD = [{'a': 0, 'b': 2}, {'a': 1, 'b': 3}]
以下是我想到的单行解决方案(为了便于阅读,分散在多行上):
如果 dl 是你原始的列表字典:
dl = {"a":[0, 1],"b":[2, 3]}
然后下面介绍如何将其转换为字典列表:
ld = [{key:value[index] for key,value in dl.items()}
for index in range(max(map(len,dl.values())))]
如果您假设所有列表的长度都相同,则可以通过以下方式简化并提高性能:
ld = [{key:value[index] for key, value in dl.items()}
for index in range(len(dl.values()[0]))]
以下是将其转换回列表字典的方法:
dl2 = {key:[item[key] for item in ld]
for key in list(functools.reduce(
lambda x, y: x.union(y),
(set(dicts.keys()) for dicts in ld)
))
}
如果您使用的是 Python 2 而不是 Python 3,那么您可以使用 reduce
代替 functools.reduce
。
如果您假设列表中的所有字典都具有相同的键,则可以简化此过程:
dl2 = {key:[item[key] for item in ld] for key in ld[0].keys() }