Skip to main content
 首页 » 编程设计

python之有两部词典,想以某种方式将它们组合起来

2025年05月04日20linjiqin

所需的字典格式:

foo = {'a': [{'Arizona': [Partner(state='Arizona', name='shmo', logo='123.png', link=''), Partner(state='Arizona', name='joe', logo='png', link='')] }, 'c':[{'california': [stuff, more_stuf]}]} 

我目前拥有的字典:

第一个:

{'o': [Partner(state='Ohio', name='hi', logo='pic.png', link='http'),  
Partner(state='Ohio', name='ayo', logo='int.png',)],  
'a':[Partner(state='alaska', name='hi', logo='pic.png', link='http'),  
Partner(state='arkansas', name='ayo', logo='int.png',)]}) 

第二个:

 {'Ohio': [Partner(state='Ohio', name='shmo', logo='123.png',  
link=''), Partner(state='Ohio', name='joe', logo='png', link='')],  
'Alaska': [Partner(state='Alaska', name='yo',logo='321.png',  
link='')],  
'arkansas'[Partner(state='arkansas',name='yo',logo='321.png', link='')] 

我什至有一个字典,里面有字母!

{'i': None, 'm': 'm', 'f': None, 'j': None, 'b': None, 'p': None, 'n': None, 't': 't', 'v': None, 'k': None, 'e': None, 'g': None, 'q': None, 'h': None, 'y': None, 'c': None, 'w': None, 'a': 'a', 'u': None, 'x': None, 'l': None, 'o': 'o', 'd': None, 'z': None, 's': None, 'r': None} 

甚至是一个列表!

dict_keys(['a', 'm', 'o', 't']) 

我试过的东西

partners_by_states = defaultdict(list) 
for partner in partner_list: 
    raw_state_state_name = partner.state 
    state_key = raw_state_state_name.lower() 
    partners_by_states[state_key].append(partner) 
 
used_letters = partners_by_state.keys() 
 
for key, value in partners_by_states.items(): 
    partners = sorted(value, key=lambda x: x.name) 
    partners_by_states[state_key] = partners 

请您参考如下方法:

这可能是您正在寻找的解决方案:

dict_1 = {'o': [Partner(state='Ohio', name='hi',logo='pic.png',link='http'),  
Partner(state='Ohio', name='ayo', logo='int.png',)],  
'a':[Partner(state='alaska', name='hi', logo='pic.png', link='http'),  
Partner(state='arkansas', name='ayo', logo='int.png',)]} 
 
dict_2 = {'Ohio': [Partner(state='Ohio',name='shmo',logo='123.png',link=''), 
Partner(state='Ohio', name='joe', logo='png', link='')],  
'Alaska': [Partner(state='Alaska', name='yo',logo='321.png', link='')],  
'arkansas': [Partner(state='arkansas',name='yo',logo='321.png', link='')]} 
 
foo = {} 
for key_1,value_1 in dict_1.items(): 
    for key_2,value_2 in dict_2.items(): 
        if key_2.lower().startswith(key_1): 
            if key_1 not in foo: 
                foo[key_1] = [{key_2:value_2}] 
 
            elif key_1 in foo: 
                foo.get(key_1).append({key_2:value_2})