将set,list和Dictionary作为参数传递给Python函数

时间:2016-04-03 05:09:35

标签: python list dictionary set

请检查下面的代码并进行必要的更正。它给了我一个错误信息。

作业如下所示。

  

创建一个执行以下操作的函数{{1}

     
      
  1. 接受manipulate_data作为第一个参数,指定要使用的数据结构stringlistset

  2.   
  3. 根据指定的数据结构接受要操作的数据的第二个参数,例如dictionary数据结构的[1, 4, 9, 16, 25]

  4.   
  5. 基于第一个参数

         
        
    • 返回列表的反向或
    •   
    • 将项list"ANDELA""TIA"添加到集合中并返回结果集
    •   
    • 返回字典的键。
    •   
  6.   

我的解决方案代码如下:

"AFRICA"

我不知道我是否有意义。收到的错误消息是:

def manipulate_data(argument1, argument2):
   if argument1 == "list":
     argument2.reverse()
return argument2

if argument1 == "set":
   argument2.add("ANDELA")
   argument2.add("TIA")
   argument2.add("AFRICA")
return argument2

if argument1 == "dictionary":
   argument2.keys()
return argument2

Total Specs: 3 Total Failures: 2

test_manipulate_dictionary
Failure in line 23, in test_manipulate_dictionary self.assertEqual(result, ["grapes", "mangoes", "apples", "oranges"], msg = "Dictionary not manipulated correctly") AssertionError: Dictionary not manipulated correctly

3 个答案:

答案 0 :(得分:1)

您走在正确的轨道上但我认为您在dictset的情况下错误地将参数传递给您的函数,因为默认情况下{}表示字典

这样的事情:

def manipulate_data(argument1, argument2):
    if argument1 == "list":
        argument2.reverse()
        return argument2

    if argument1 == "set":
        argument2.update(["ANDELA", "TIA", "AFRICA"])
        return argument2

    if argument1 == "dictionary":
        return argument2.keys()

print(manipulate_data('list', [1,2,3,4,5,6]), manipulate_data('set', {1,2,3,4,5,6}), manipulate_data('dictionary', {1:2,3:4,5:6}), sep='\n')

输出:

$ python3 a.py 
[6, 5, 4, 3, 2, 1]
{'ANDELA', 1, 2, 3, 4, 5, 6, 'TIA', 'AFRICA'}
dict_keys([1, 3, 5])
$

答案 1 :(得分:0)

def manipulate_data(argument1, argument2):
    if argument1 == "list":
        if isinstance(argument2, list):
            argument2.reverse()
            return argument2

    if argument1 == "set":
        if isinstance(argument2, set):
            argument2.add("ANDELA")
            argument2.add("TIA")
            argument2.add("AFRICA")
            return argument2

    if argument1 == "dictionary":
        if isinstance(argument2, dict):
            return argument2.keys()

l = [1,2,3]
d = {'a':1, 'b':2, 'c':3 }
s = set()
s.add(1)
s.add(2)
s.add(3)

print manipulate_data("list", l)
print manipulate_data("dictionary", d)
print manipulate_data("set", s)

答案 2 :(得分:0)

def manipulate_data(arg1, arg2):
    if arg1 == "list":
        arg2.reverse()
        return arg2,type(arg2)

    #http://stackoverflow.com/questions/15768757/how-to-construct-a-set-out-of-list-items
    if arg1 == "set":
        myset=set(arg2)
        myset.add("ANDELA")
        myset.add("TIA")
        myset.add("AFRICA")
        return myset,type(myset)

    if arg1 == "dictionary":
        mydict={}
        for l in arg2:
            mydict[l]=l
        return mydict.keys(),type(mydict)


print manipulate_data("list",[1, 4, 9, 16, 25])
print manipulate_data("set",[1, 4, 9, 16, 25])
print manipulate_data("dictionary",[1, 4, 9, 16, 25])

输出:

([25, 16, 9, 4, 1], <type 'list'>)
(set([1, 4, 9, 'AFRICA', 16, 25, 'TIA', 'ANDELA']), <type 'set'>)
([16, 1, 4, 25, 9], <type 'dict'>)