【问题标题】:compare two different length lists of dictionaries in python比较python中两个不同长度的字典列表
【发布时间】:2018-07-03 00:51:37
【问题描述】:

我想比较以下词典。字典中的名称键在两个字典中都是通用的。 如果名称在两个字典中都匹配,我想对数据做一些其他的事情。

PerfData = [
            {'Name': 'abc', 'Type': 'Ex1', 'Access': 'N1', 'perfStatus':'Latest Perf', 'Comments': '07/12/2017  S/W Version'},
            {'Name': 'xyz', 'Type': 'Ex1', 'Access': 'N2', 'perfStatus':'Latest Perf', 'Comments': '11/12/2017  S/W Version upgrade failed'},
            {'Name': 'efg', 'Type': 'Cust1', 'Access': 'A1', 'perfStatus':'Old Perf', 'Comments': '11/10/2017  S/W Version upgrade failed, test data is active'}
        ]

 beatData = [
            {'Name': 'efg', 'Status': 'Latest', 'rcvd-timestamp': '1516756202.632'},
            {'Name': 'abc', 'Status': 'Latest', 'rcvd-timestamp': '1516756202.896'}
            ]

谢谢 拉吉夫

【问题讨论】:

  • 你试过什么?请看how to ask questions
  • 是的,您可以通过匹配键来比较两个字典。
  • 这只是示例数据,我想用两个单独的字典进行迭代,如果两个字典中的 Name 是通用的,则执行一些自动操作或为新变量赋值从剩余的键。循环确实需要很多时间来执行,有没有更好的方法来提高效率?
  • @RajeevK 给我们看一个你想做的例子。

标签: python python-3.x list dictionary


【解决方案1】:
l = [{'name': 'abc'}, {'name': 'xyz'}]
k = [{'name': 'a'}, {'name': 'abc'}]
[i['name'] for i in l for f in k if i['name'] == f['name']]

希望以上逻辑对你有用。

【讨论】:

  • 对不起,这可能是个愚蠢的问题,代码工作没有错误,但是我试图打印比较值,但它表明“i”未定义。
【解决方案2】:

提供的答案没有将结果分配给任何变量。如果您想打印它,请添加以下内容:

result = [i['name'] for i in l for f in k if i['name'] == f['name']]
print(result)

【讨论】:

    猜你喜欢
    • 2017-12-24
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    相关资源
    最近更新 更多