首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

如何合并两个存放字典的列表?

  •  
  •   petelin · 2016-06-01 13:21:05 +08:00 · 974 次点击
    这是一个创建于 1287 天前的主题,其中的信息可能已经有所发展或是发生改变。

    django 查询出来的东西经常是这样子的

    In [118]: a
    Out[118]: [{'id': 1, 'total': 10}, {'id': 2, 'total': 20}]
    
    In [119]: b
    Out[119]: [{'id': 1, 'sum': 10324}, {'id': 2, 'sum': 21230}]
    

    a,b 的长度相同,里面每个字典 id 也都是一样的(可能顺序不同)。 我在想怎么把它们合并起来,变成这个样子

    Out[120]: [{'id': 1, 'sum': 10324, 'total': 10}, {'id': 2, 'sum': 21230, 'total': 20}]
    

    没有想出来什么好办法(时间上),只能两层 for 循环 加 if 判断,各位有什么办法吗???

    2 回复  |  直到 2016-06-01 13:58:33 +08:00
        1
    JackeyGao   2016-06-01 13:55:14 +08:00
    ```
    >>> a = [{'id': 1, 'total': 10}, {'id': 2, 'total': 20}]
    >>> b = [{'id': 1, 'sum': 10324}, {'id': 2, 'sum': 21230}]
    >>> [ dict(x.items() + y.items()) for x, y in zip(a, b) ]
    [{'sum': 10324, 'total': 10, 'id': 1}, {'sum': 21230, 'total': 20, 'id': 2}]
    >>>
    ```
        2
    xss   2016-06-01 13:58:33 +08:00
    hash_array = {}
    for each_item in a+b :
    if each_item['id'] not in hash_array :
    hash_array[each_item['id']] = {'total':each_item['total']} #或者是 sum,自己判断吧,这里只说意思
    else :
    hash_array[each_item['id']]['sum'] = each_item['sum']
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3838 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 09:53 · PVG 17:53 · LAX 01:53 · JFK 04:53
    ♥ Do have faith in what you're doing.