我已经坚持了一段时间(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]]))
这将打印仅出现一次但不按接收顺序出现的元素
任何帮助都会很棒
答案 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
,所以它们应该是除去。