python根据list设置字典嵌套内字段的值

print("Hello, World!");
info = {}
def setInfo():
    global info
    list = ['desc', 'id']

print(info["desc"]["id"])

如何根据list设置info字典内id的值

迭代逐步创建嵌套字典,在最后一层字典中设置值

info = {}

def setInfo():
    global info
    lst = ['desc', 'id']
    current_dict = info
    
    for key in lst[:-1]:
        if key not in current_dict:
            current_dict[key] = {}
        current_dict = current_dict[key]
    
    current_dict[lst[-1]] = "your_value"

setInfo()
print(info["desc"]["id"])
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7618414
  • 这篇博客你也可以参考下:python遍历字典以及list转化字典,求字典元素最大值
  • 除此之外, 这篇博客: Python语法学习记录(9):list浅拷贝问题解析中的 什么样的操作会破坏共享浅拷贝 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #============================================================================
    #针对列表进行append,remove等操作不会破坏浅拷贝两个列表一同更新
    #针对列表中间元素进行复制,不会破坏浅拷贝 两个列表一同更新
    #针对中间一个列表进行复制  会重新设置id   破坏浅拷贝   之后两个列表无关 
    print("===="*5,"等于所带来浅拷贝")
    list1 = [1,2,3]
    list2 = list1
    print("after  =    ======")
    print("打印list1:",list1)
    print("打印list2:",list2)
    print("List1地址:",id(list1))
    print("List2地址:",id(list2))
    list1.remove(3)  
    print("after remove=====")
    print("打印list1:",list1)
    print("打印list2:",list2)
    print("List1地址:",id(list1))
    print("List2地址:",id(list2))
    list1.append(3)
    print("after append=====")
    print("打印list1:",list1)
    print("打印list2:",list2)
    print("List1地址:",id(list1))
    print("List2地址:",id(list2))
    list1[1] = 0
    print("after ele init ==")
    print("打印list1:",list1)
    print("打印list2:",list2)
    print("List1地址:",id(list1))
    print("List2地址:",id(list2))
    list1[1] = [3,4]
    print("after ele init ==")
    print("打印list1:",list1)
    print("打印list2:",list2)
    print("List1地址:",id(list1))
    print("List2地址:",id(list2))
    list1[0] = [1,2]
    print("after ele init ==")
    print("打印list1:",list1)
    print("打印list2:",list2)
    print("List1地址:",id(list1))
    print("List2地址:",id(list2))
    list1 = [1,2,3,4]#重新赋值时候浅拷贝无效  id change
    print("after list init ==")
    print("打印list1:",list1)
    print("打印list2:",list2)
    print("List1地址:",id(list1))
    print("List2地址:",id(list2))
    

    在这里插入图片描述

  • 您还可以看一下 秦红华老师的美女讲师教你学Python第一季:基础入门课程中的 List列表的基本操作方法小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我的回答:

    这里有两个问题需要解决:如何为每个在列表中的元素分配一个唯一ID,以及如何将这些ID写入嵌套字典中的ID字段。下面是解决这些问题的具体步骤和示例代码:

    1. 为每个在列表中的元素分配一个唯一ID

    可以使用Python的id()函数为列表中的每个元素分配一个唯一的ID。由于id()函数根据对象的内存地址返回一个唯一的整数,因此在本例中我们可以直接使用id()函数生成唯一ID。

    以下是一个示例代码,用于创建一个具有唯一ID的列表:

    items = ['apple', 'banana', 'cherry']
    id_dict = {}
    for item in items:
        item_id = id(item)
        id_dict[item_id] = item
    

    上面的代码将创建一个名为id_dict的字典,其中每个键都是列表中每个元素的唯一ID,值则是对应的元素本身。你可以使用id_dict[item_id]来获取与特定ID对应的元素。

    1. 将这些ID写入嵌套字典中的ID字段

    根据上一步创建的带有唯一ID的列表,我们可以使用以下代码将这些ID写入嵌套字典中的ID字段:

    items = ['apple', 'banana', 'cherry']
    id_dict = {}
    for item in items:
        item_id = id(item)
        id_dict[item_id] = {'name': item, 'ID': item_id}
    

    上面的代码将为每个元素创建一个字典,其中包含两个键:name和ID。name键的值即为元素本身,而ID键的值则为元素的唯一ID。你可以分别使用id_dict[item_id]['name']id_dict[item_id]['ID']来获取与特定ID对应的元素名称和唯一ID。

    这是一个完整的示例代码,展示了如何在速度和清晰度之间进行权衡:

    items = ['apple', 'banana', 'cherry']
    id_dict = {}
    for item in items:
        item_id = id(item)
        item_dict = {'name': item, 'ID': item_id}
        id_dict[item_id] = item_dict
    print(id_dict)
    

    运行上面的代码会得到以下输出:

    {140130886997200: {'name': 'apple', 'ID': 140130886997200}, 
    140130886997456: {'name': 'banana', 'ID': 140130886997456}, 
    140130886997520: {'name': 'cherry', 'ID': 140130886997520}}
    

    它展示了一个名为id_dict的字典,其中包含3个键值对,每个键值对的键都是列表元素的唯一ID,而值则是字典,包含两个键:name和ID。