使用带有列表的字典,a作为参数,并返回一个列表,其中包含恰好出现一次的元素

时间:2014-10-09 06:08:35

标签: list python-2.7 dictionary elements

我已经坚持了一段时间(Python 2.x)

通过使用dict,编写一个方法only_once(a),将一个列表a作为参数,并返回一个包含a元素的列表一旦。元素必须与a中第一次出现的顺序相同。

def once (a):

    list=[]
    d = {}
    run=0

    for i in a: 
        d[i] = d.has_key(i)    

    print ([k for k in d.keys() if not d[k]]))

这将打印仅出现一次但不按接收顺序出现的元素

任何帮助都会很棒

1 个答案:

答案 0 :(得分:0)

您的关键问题是您遍历字典键(显式.keys()是不必要的,因为您默认迭代字典的键)以获取输出;字典无序。相反,您需要使用输入顺序:

def only_once(a):
    d = {}
    for item in a:
        if item not in d:
            d[item] = 0
        d[item] += 1
    return [item for item in a if d[item] == 1]

请注意,您的代码永远不会使用list(因为它影响内置,是您不应该为自己的变量使用的名称)和run,所以它们应该是除去。