将值分配给字典python中的键

问题描述 投票:-1回答:2

由于我想将新的ID附加到字典键,所以我基于旧的字典键和新项创建了一个新字典。但是现在,我想为新字典的每个键分配一个列表值。

所以,我写了这段代码:

   old_dict={22:[99,4['Dog','Dog.1']],14:[99,8['Dog2','Dog.3']],23:[97,8['Cat2','Dog.3']]}
   new_dict={22|14:[99,4['Dog','Dog.1']],14|25:[99,8['Dog2','Dog.3']],23|5:[97,8['Cat2','Dog.3']]}
   list=[[99,4['Dog','Dog.1']],[99,8['Dog2','Dog.3']],[97,8['Cat2','Dog.3']]]
    new_dict2 = {}
    for values in list:
        for old, new in zip(old_dictionary.keys(), new_dictionary.values()):
            new_ID = old + '|' + new
            new_dict2[new_ID] = values

但是,这是在新字典的所有键中重复列表的第一个值。

请,如何纠正此错误?

python
2个回答
0
投票

22 | 14是按位或函数。您可能希望自己的文字成为文字。因此,请在引号中加上“ 22 | 14”

您的解决方案是拆分键和值,然后重新组合它们。它应该看起来像这样:

keys1, values1 = dict1.items()
keys2, values2 = dict2.items()
new_keys = [str(a)+'|'+str(b) in zip (keys1, keys2)]
new_dict = {k:v for k, v in zip (new_keys, some_new values)}

0
投票

我通过这种方式解决了我的问题:

    final_all={}
    for old_k,new_k in zip(old_dictionary.keys(),new_dictionary.keys()):
        new_ID=str(old_k) + '|' + str(new_k )
        final_all[new_ID]=list_values

感谢您的帮助

© www.soinside.com 2019 - 2024. All rights reserved.