8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

字典列表至/自列表字典

René Vogt 1月前

110 0

我想在(等长)列表字典之间来回切换: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}]
帖子版权声明 1、本帖标题:字典列表至/自列表字典
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由René Vogt在本站《dictionary》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 以下是我想到的单行解决方案(为了便于阅读,分散在多行上):

    如果 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() }
    
返回
作者最近主题: