【问题标题】:Python - Interate and compare over list and dict in dict in parallelPython - 并行迭代和比较字典中的列表和字典
【发布时间】:2020-07-12 10:26:21
【问题描述】:

我想并行迭代一个列表和一个字典中的字典并找到相同的字符串。如果它找到相同的字符串,我想将值和键对添加到我正在迭代的字典中。

很遗憾,我无法让它工作。我简化了问题,让代码在这里更容易交换。

x = ['a', 'c', 'f', 'h']
y = {'root_name': [
        {'value01': 'key01', 'value02': 'a'},
        {'value01': 'key02', 'value02': 'b'},
        {'value01': 'key03', 'value02': 'c'},
        {'value01': 'key04', 'value02': 'd'},
        {'value01': 'key05', 'value02': 'e'},
        {'value01': 'key06', 'value02': 'f'},
        {'value01': 'key07', 'value02': 'g'},
        {'value01': 'key08', 'value02': 'h'},
        {'value01': 'key09', 'value02': 'i'},
        {'value01': 'key10', 'value02': 'j'}
                   ]}

for i, j in zip(x, y['root_name']):
    if i == j['value02']:
        y['root_name']['key_exists'] = True

【问题讨论】:

  • “并行”可能意味着多个线程无济于事。也许第一句话应该是我想遍历一个列表和一个字典中的字典来查找匹配的字符串。这听起来准确吗?
  • 匹配的字符串总是在value02吗?
  • 在您的示例中,预期的输出是什么?您是否只想将“root_name”列表中的前 4 个字典顺序与x 中的 4 个值进行比较?
  • 根据您的目标,可能就像用j['key_exists'] = True 替换y['root_name']['key_exists'] = True 一样简单。那么列表中的第一个字典是{'value01': 'key01', 'value02': 'a', 'key_exists': True}

标签: python list loops dictionary if-statement


【解决方案1】:

假设您尝试将 key_exists 放在 x 中存在“value02”值的字典中。

x = ['a', 'c', 'f', 'h']
y = {'root_name': [
        {'value01': 'key01', 'value02': 'a'},
        {'value01': 'key02', 'value02': 'b'},
        {'value01': 'key03', 'value02': 'c'},
        {'value01': 'key04', 'value02': 'd'},
        {'value01': 'key05', 'value02': 'e'},
        {'value01': 'key06', 'value02': 'f'},
        {'value01': 'key07', 'value02': 'g'},
        {'value01': 'key08', 'value02': 'h'},
        {'value01': 'key09', 'value02': 'i'},
        {'value01': 'key10', 'value02': 'j'}
                   ]}

    set_x = set(x)  # To speed checking for presence (only useful for larger lists)
    for i in y['root_name']:
        if i['value02'] in set_x:
            i['key_exists'] = True

    import pprint
    pprint.pprint(y)

输出

{'root_name': [{'key_exists': True, 'value01': 'key01', 'value02': 'a'},
               {'value01': 'key02', 'value02': 'b'},
               {'key_exists': True, 'value01': 'key03', 'value02': 'c'},
               {'value01': 'key04', 'value02': 'd'},
               {'value01': 'key05', 'value02': 'e'},
               {'key_exists': True, 'value01': 'key06', 'value02': 'f'},
               {'value01': 'key07', 'value02': 'g'},
               {'key_exists': True, 'value01': 'key08', 'value02': 'h'},
               {'value01': 'key09', 'value02': 'i'},
               {'value01': 'key10', 'value02': 'j'}]}

【讨论】:

  • 非常感谢您的回答:)。它就像魅力一样,在查看您的示例时,我发现自己的思维方式变得复杂。
猜你喜欢
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-03
  • 2020-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多