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

How to append a dictionary value to an existing dictionary value?

假设我有一个:

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

上下文就像一个队列系统。 Main 是普通队列。而“Elisha:[Kenneth]”就像一个 Cut 队列。你可以想象当 Elisha 决定让他的朋友 Kenneth 加入队列时,每个人都在正常排队买麦当劳。

我如何将“Kenneth”附加到“Main”:“Elisha”,这样当我打印 dict['Main'] 时,它将 return 以下预期输出:

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

如果 Elisha 决定带另一个朋友“Elisha”:[“Nicole”]。那么预期的输出将是:

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

我尝试使用谷歌搜索追加,但追加不适用于字典,只能用于列表。

我试过了:

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

但它 returned 错误。

您的情况需要使用 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']