如何将字典值附加到现有字典值?

2024-06-01 07:57:30 发布

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

假设我有一个:

dict = {"Main": ["Tammy","Elisha","Julius"],
        "Elisha": ["Kenneth"]
       }

上下文就像一个队列系统。主队列是正常队列。而“以利沙:[肯尼思]”就像是一个插队。你可以想象,当伊丽莎决定带他的朋友肯尼斯排队时,每个人都在正常地排队买麦当劳

如何将“Kenneth”附加到“Main”:“Elisha”,以便在打印dict['Main']时,它将返回以下预期输出:

预期输出:[Tammy, Elisha, Kenneth, Julius ]

如果以利沙决定请另一位朋友“以利沙”:[“妮可”]。那么预期的输出将是:

预期输出:[ Tammy, Elisha, Kenneth, Nicole, Julius ]

我试着在谷歌上搜索append,但append对字典不起作用,只在列表中起作用

我试过:

dict['Main'].value("Elisha").append("Kenneth")

但它返回了错误


Tags: 队列main系统朋友dict排队想象append
2条回答

您需要在您的案例中使用extend

dic = {"Main":["Tammy","Elisha","Julius"],
        "Elisha": ["Kenneth", "Nicole"]
       }
dic["Main"].extend(dic["Elisha"])
print(dic["Main"])

输出:

['Tammy', 'Elisha', 'Julius', 'Kenneth', 'Nicole']

另外,避免对对象名称使用关键字dict,以避免生成行为中的阴影

更新:

要在特定的index处插入,可以首先使用index()方法获取要插入的索引,然后使用切片插入新列表,如下所示:

idx = dic["Main"].index("Elisha")
dic["Main"][idx+1:len(dic["Elisha"])] = dic["Elisha"]
print(dic["Main"])

['Tammy', 'Elisha', 'Kenneth', 'Nicole', 'Julius']

您可以递归打印队列 工作原理:

  1. 排空队
  2. Main队列中的第一个人开始
  3. 将此人添加到1中提到的空队列中
  4. 检查此人是否有朋友,如果有
  5. 将他们添加到1中提到的队列中,并检查他们的朋友是否存在
d = {"Main":["Tammy","Elisha","Julius"],

        "Elisha": ["Kenneth"]
       }

def get_flattened_queue(data, key, flattened_queue):
    members = data[key]
    for each_member in members:
        flattened_queue.append(each_member)
        if each_member in data.keys():
            get_flattened_queue(data, each_member, flattened_queue)
    return flattened_queue

flattened_queue = []
get_flattened_queue(d, 'Main', flattened_queue)

print(flattened_queue)
['Tammy', 'Elisha', 'Kenneth', 'Julius']

现在假设Elisa带来Nicole

d = {"Main":["Tammy","Elisha","Julius"],

        "Elisha": ["Kenneth"]
       }

def get_flattened_queue(data, key, flattened_queue):
    members = data[key]
    for each_member in members:
        flattened_queue.append(each_member)
        if each_member in data.keys():
            get_flattened_queue(data, each_member, flattened_queue)
    return flattened_queue

# Here she brings Nicole
d['Elisha'].append('Nicole')

#{"Main":["Tammy","Elisha","Julius"],
#        "Elisha": ["Kenneth", "Nicole"]
#       }

flattened_queue = []
get_flattened_queue(d, 'Main', flattened_queue)

print(flattened_queue)
['Tammy', 'Elisha', 'Kenneth', 'Nicole', 'Julius']

d = {"Main":["Tammy","Elisha","Julius"],

        "Elisha": ["Kenneth"]
       }

def get_flattened_queue(data, key, flattened_queue):
    members = data[key]
    for each_member in members:
        flattened_queue.append(each_member)
        if each_member in data.keys():
            get_flattened_queue(data, each_member, flattened_queue)
    return flattened_queue

# Here she brings Nicole
d['Elisha'].append('Nicole')

#{"Main":["Tammy","Elisha","Julius"],
#        "Elisha": ["Kenneth", "Nicole"]
#       }

# Nicole brings Epsi95
d['Nicole'] = ['Epsi95']

flattened_queue = []
get_flattened_queue(d, 'Main', flattened_queue)

print(flattened_queue)
{'Main': ['Tammy', 'Elisha', 'Julius'],
 'Elisha': ['Kenneth', 'Nicole'],
 'Nicole': ['Epsi95']}


['Tammy', 'Elisha', 'Kenneth', 'Nicole', 'Epsi95', 'Julius']

相关问题 更多 >