您还可以保留元素已被看到的次数。用于此的字典,并增加每个目击:
#!/usr/bin/python
dc = {3:['3', '4'], 1:['2', '3'], 2:['3']}
de={}
def do_something(i,k):
print "first time for '%s' with key '%s'" % (i,k)
def do_somethingelse(i,j,k):
print "element '%s' seen %i times. Now with key '%s'" % (i,j,k)
for k in sorted(dc):
for i in dc[k]:
if i not in de:
de[i]=1
do_something(i,k)
else:
de[i]+=1
do_somethingelse(i,de[i],k)
正如其他人所说,字典不具有相同的顺序一定是插入或代码清单。如果这与排序顺序相同,您可以对键(与sorted(dc)
)进行排序以区分“第一”与后续。这种方法很容易扩展到'do_somthing',这取决于许多倍的项目被看到。
输出:
first time for '2' with key '1'
first time for '3' with key '1'
element '3' seen 2 times. Now with key '2'
element '3' seen 3 times. Now with key '3'
first time for '4' with key '3'
或者:
r=[]
for k in sorted(dc):
print dc[k]
if '3' in dc[k]:
r.append("'3' number {} with key: {}".format(len(r)+1,k))
生产:
["'3' number 1 with key: 1", "'3' number 2 with key: 2", "'3' number 3 with key: 3"]
r
将具有在的dc
键中的排序顺序的3串列表,那么只需遍历序列即可。
如果你只是寻找“第一个” 3
那么剩下的,你可以使用列表理解:
>>> l=[i for sub in [dc[k] for k in sorted(dc)] for i in sub if i == '3']
>>> l
['3', '3', '3']
>>> l[0]
'3'
>>> l[1:] #all the rest...
既然字典没有排序,那么''第一'出现'3'是什么意思? – wim
ps.s.命名你的变量'dict'是一个坏主意,因为你影响内置 – wim
谢谢Wim。我不确定这是否可能。有三次出现3,我的意思是1:['2','3']在这里,3出现第一次 –