如何将字典对象值从一个键复制到另一个键?
How to copy dictionary object value from one key to another?
我必须制作一个带有输入的字典,其中可能包含 "key -> value1, value2" 或 "key -> key"。
键总是字符串,值总是整数,用逗号和 space 分隔。
如果给定一个键和值,我必须将值存储到给定的键中。
如果密钥已经存在,我必须将给定值添加到旧值中。
如果给定一个键和另一个键,我必须将另一个键的值复制到第一个键。
如果另一个键不存在,则必须忽略此输入行。
当我收到“结束”命令时,我必须停止读取输入行,并且必须按以下格式打印所有键及其值:
{key} === {value1, value2, value3}
data = input()
dict_ref = {}
def is_int(s):
try:
int(s)
return True
except ValueError:
return False
while data != "end":
list_data = data.split(" -> ")
name = list_data[0]
values = list_data[1].split(", ")
if name not in dict_ref and is_int(values[0]):
dict_ref[name] = values
elif values[0] in dict_ref:
dict_ref[name] = dict_ref[values[0]]
elif name in dict_ref and is_int(values[0]):
dict_ref[name].extend(values)
data = input()
for item in dict_ref:
print(f"{item} === ", end="")
print(", ".join(dict_ref[item]))
输入:
彼得 -> 1、2、3
艾萨克 -> 彼得
彼得 -> 4、5
结束
预期输出:
彼得 === 1, 2, 3, 4, 5
伊萨克 === 1, 2, 3
实际输出:
彼得 === 1, 2, 3, 4, 5
伊萨克 === 1, 2, 3, 4, 5
data = input()
dict_ref = {}
def is_int(s):
try:
int(s)
return True
except ValueError:
return False
while data != 'end':
list_data = data.split('->')
key = list_data[0].strip()
values = list_data[1].split(',')
for value in values:
value = value.strip()
if key not in dict_ref.keys() and is_int(value):
dict_ref[key] = [value]
elif key in dict_ref.keys() and is_int(value):
dict_ref[key].append(value)
else:
'''
With Python dictionaries, when you assign a key to the value of another, the refresh is done automatically.
For example, writing in this condition, dict_ref [key] = dict_ref [value], when the while loop will start with a new data value,
dict_ref [key] = dict_ref [value] will be dynamically updated with the new data as well.
That's why you should not make a direct assignment, you have to create a new variable that will contain Peter's values,
then you will assign to the key 'Isacc'.
'''
vals = list() #New List
for val in dict_ref[value]:
vals.append(val)
dict_ref[key] = vals
data = input()
for item in dict_ref:
print(f"{item} === ", end="")
print(", ".join(dict_ref[item]))
输入:
彼得 -> 1、2、3
艾萨克 -> 彼得
彼得 -> 4、5
结束
输出:
彼得 === 1, 2, 3, 4, 5
伊萨克 === 1, 2, 3
我必须制作一个带有输入的字典,其中可能包含 "key -> value1, value2" 或 "key -> key"。 键总是字符串,值总是整数,用逗号和 space 分隔。 如果给定一个键和值,我必须将值存储到给定的键中。 如果密钥已经存在,我必须将给定值添加到旧值中。 如果给定一个键和另一个键,我必须将另一个键的值复制到第一个键。 如果另一个键不存在,则必须忽略此输入行。 当我收到“结束”命令时,我必须停止读取输入行,并且必须按以下格式打印所有键及其值: {key} === {value1, value2, value3}
data = input()
dict_ref = {}
def is_int(s):
try:
int(s)
return True
except ValueError:
return False
while data != "end":
list_data = data.split(" -> ")
name = list_data[0]
values = list_data[1].split(", ")
if name not in dict_ref and is_int(values[0]):
dict_ref[name] = values
elif values[0] in dict_ref:
dict_ref[name] = dict_ref[values[0]]
elif name in dict_ref and is_int(values[0]):
dict_ref[name].extend(values)
data = input()
for item in dict_ref:
print(f"{item} === ", end="")
print(", ".join(dict_ref[item]))
输入:
彼得 -> 1、2、3
艾萨克 -> 彼得
彼得 -> 4、5
结束
预期输出:
彼得 === 1, 2, 3, 4, 5
伊萨克 === 1, 2, 3
实际输出:
彼得 === 1, 2, 3, 4, 5
伊萨克 === 1, 2, 3, 4, 5
data = input()
dict_ref = {}
def is_int(s):
try:
int(s)
return True
except ValueError:
return False
while data != 'end':
list_data = data.split('->')
key = list_data[0].strip()
values = list_data[1].split(',')
for value in values:
value = value.strip()
if key not in dict_ref.keys() and is_int(value):
dict_ref[key] = [value]
elif key in dict_ref.keys() and is_int(value):
dict_ref[key].append(value)
else:
'''
With Python dictionaries, when you assign a key to the value of another, the refresh is done automatically.
For example, writing in this condition, dict_ref [key] = dict_ref [value], when the while loop will start with a new data value,
dict_ref [key] = dict_ref [value] will be dynamically updated with the new data as well.
That's why you should not make a direct assignment, you have to create a new variable that will contain Peter's values,
then you will assign to the key 'Isacc'.
'''
vals = list() #New List
for val in dict_ref[value]:
vals.append(val)
dict_ref[key] = vals
data = input()
for item in dict_ref:
print(f"{item} === ", end="")
print(", ".join(dict_ref[item]))
输入:
彼得 -> 1、2、3
艾萨克 -> 彼得
彼得 -> 4、5
结束
输出:
彼得 === 1, 2, 3, 4, 5
伊萨克 === 1, 2, 3