为python字典中的键赋值

2024-05-19 00:44:05 发布

您现在位置:Python中文网/ 问答频道 /正文

因为我想向字典键追加一个新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

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

请问,如何更正此错误


Tags: inid列表newfordictionary字典old
2条回答

22 | 14是按位OR函数。你可能希望你的leys是文本。所以请用引号“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)}

我这样解决了我的问题:

    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

谢谢你的帮助

相关问题 更多 >

    热门问题