有人可以向我解释我的代码中缺少什么吗?我一直在寻找互联网上的解决方案,我发现了一个模板,我认为这是正确的,但它仍然给我错误。谁知道我做错了什么?
创建一个执行以下操作的函数manipulate_data:
接受指定要使用“list”,“set”或“dictionary”的数据结构的字符串作为第一个参数。 接受基于指定的数据结构(例如[1,4,9,16,25])对列表数据结构进行操作的数据的第二个参数。
基于第一个参数返回列表的反向,或者将项
"ANDELA"
,"TIA"
和"AFRICA"
添加到集合中,或将结果集作为键返回字典。
def manipulate_data(kind, data):
if kind == "list":
for data in [1, 4, 9, 16, 25]:
return data.reverse()
elif kind == "set":
for data in {"f", "g", "h", "i", "j"}:
data.add("ANDELA")
data.add("TIA")
data.add("AFRICA")
return data
elif kind == "dictionary":
for data in {"nissan": 23, "audi": 15, "mercedes": 3, "volvo": 45}:
return data.key()
答案 0 :(得分:1)
看起来您已经进行了课堂练习,根据其类型对数据进行不同的操作。我要做的第一件事就是抛出"类型"参数,因为它很容易找出像Python这样的语言的类型。您的解决方案硬编码本应作为"数据"传入的数据。参数。做出这些修复,我们得到类似的结果:
def manipulate_data(data):
if type(data) is list:
data.reverse()
return data
elif type(data) is set:
data.add("ANDELA")
data.add("TIA")
data.add("AFRICA")
return data
elif type(data) is dict:
return data.keys()
return data # just return anything else
我们可以通过传递三种不同类型的数据进行测试:
>>> manipulate_data([1, 4, 9, 16, 25])
[25, 16, 9, 4, 1]
>>>
>>> manipulate_data({"f", "g", "h", "i", "j"})
{'h', 'f', 'AFRICA', 'ANDELA', 'g', 'i', 'TIA', 'j'}
>>>
>>> manipulate_data({"nissan": 23, "audi": 15, "mercedes": 3, "volvo": 45})
dict_keys(['audi', 'volvo', 'mercedes', 'nissan'])
>>>
像return data.reverse()
这样的语句没有意义,因为.reverse()方法修改了它的对象,这些方法通常不会返回任何内容。执行此行的另一种方法是return reversed(data)
,它会复制和反转数据,而不是更改原始数据。
答案 1 :(得分:1)
这个问题根据问题起作用,该函数只涉及2个参数:
def manipulate_data(data_type=None, data=None):
if data_type is 'list':
return data[-1::-1]
if data_type == 'set':
return set.union(data, ["ANDELA", "TIA", "AFRICA"])
if data_type == 'dict':
return [key for key, item in data.items()]