简体   繁体   English

Python - 并行地对字典中的列表和字典进行交互和比较

[英]Python - Interate and compare over list and dict in dict in parallel

I want to iterate over a list and a dict in a dict in parallel and find the same strings.我想并行迭代一个列表和一个 dict 中的 dict 并找到相同的字符串。 If it found the same strings I want to add a value and key pair to the dicts I was iterating over.如果它找到了相同的字符串,我想将一个值和键对添加到我正在迭代的字典中。

I sadly can't get it to work.我很遗憾无法让它工作。 I simplified the problem to make the code easier to exchange here.我简化了问题,使代码更容易在这里交换。

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

Assuming you are trying to place key_exists in dictionaries where value of 'value02' exists in x.假设您试图将 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)

Output输出

{'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'}]}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM