【问题标题】:Merge 2 dictionary and Remove duplicate and subtract value of keys of duplicate element合并 2 字典并删除重复元素的键的重复和减去值
【发布时间】:2019-06-25 14:54:49
【问题描述】:

我有一个 2 文本文件,我在其中存储字典值并读取它。 所以我正在读取 file1.txt 并将值存储在 counter 变量中,对于 file2.txt 我将值存储在 counter1 变量中。 当我打印 counter 和 counter1 时,它会给出以下输出。

counter= {'laptop': 5, 'chair':6 , 'tv': 3}

counter1= {'laptop': 2, 'chair': 4, 'tv': 4,'plant':2}

p=len(计数器) 对于 z 在 (0 ,p) 范围内:

        if (list(counter.values())[v]!=list(counter1.values())[v]):

            print("Objects value on main list %s and Second List %s  "%(list(counter.items())[v],list(counter1.items())[v]))
        else:
             pass
      v=v+1

我想退货:

[{'laptop': 3}, {'chair': 2}, {'tv': 1}, {'plant': 2}]

将 counter 和 counter1 的值相减并打印结果。

【问题讨论】:

    标签: python


    【解决方案1】:

    使用这个

    counter= {'laptop': 5, 'chair':6 , 'tv': 3}
    counter1= {'laptop': 2, 'chair': 4, 'tv': 4,'plant':2}
    out = []
    for key, val in counter.items():
        if key in counter1:
            out.append({key:abs(val-counter1[key])})
        else:
            out.append({key:val})
    for key, val in counter1.items():
        if key not in counter:
            out.append({key:val})
    print(out)
    

    【讨论】:

      【解决方案2】:
      counter= {'laptop': 5, 'chair':6 , 'tv': 3}
      counter1= {'laptop': 2, 'chair': 4, 'tv': 4,'plant':2}
      out = [{key : abs(counter1[key] - counter[key])} if ((key in counter) and (key in counter1)) else {key : counter[key]} if (key in counter) else {key:counter1[key]} for key in set(counter.keys() + counter1.keys())]
      print out
      

      似乎可以在 1 行中完成,这应该可以。

      【讨论】:

      • TypeError: +: 'dict_keys' 和 'dict_keys' 的操作数类型不受支持
      • 只需将这些行复制到我的环境中即可。
      猜你喜欢
      • 1970-01-01
      • 2013-04-23
      • 2014-09-04
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 2023-01-19
      • 2020-10-20
      相关资源
      最近更新 更多