我試圖用最簡單的方法來計算所有出現的x字典,但沒有結果。 我不能導入任何庫,也不使用其他語句:var in,如果是x,如果不是,如果是。查找多次出現的字典?
結果腳本應該是這樣的: 例如:
list = [1,2,1,'a',4,2,3,3,5,'a',2]
code
print occurrences(list)
result
1 = [0, 2]
2 = [1, 5, 10]
a = [3, 9]
and so on
@edited 修正文本
我試圖用最簡單的方法來計算所有出現的x字典,但沒有結果。 我不能導入任何庫,也不使用其他語句:var in,如果是x,如果不是,如果是。查找多次出現的字典?
結果腳本應該是這樣的: 例如:
list = [1,2,1,'a',4,2,3,3,5,'a',2]
code
print occurrences(list)
result
1 = [0, 2]
2 = [1, 5, 10]
a = [3, 9]
and so on
@edited 修正文本
OK,不使用任何庫或功能:
lis = [1,2,1,'a',4,2,3,3,5,'a',2]
dic={}
index=0
for item in lis:
if item in dic:
dic[item]+=[index]
index+=1
else:
dic[item]=[index]
index+=1
print dic
輸出:
{'a': [3, 9], 1: [0, 2], 2: [1, 5, 10], 3: [6, 7], 4: [4], 5: [8]}
爲什麼你在這兩種情況下使用2x索引+ = 1? @edit 只添加「if」並刪除「else」 – user1768615
'enumerate'更方便手動計算'index'。 –
我正在嘗試使用str.index(),但它只是返回我只有第一個索引,並忽略了所有休息... 可以這麼友好給我一個枚舉的例子,請? – user1768615
>>> l = [1,2,1,'a',4,2,3,3,5,'a',2]
>>> pos = {}
>>> for i, n in enumerate(l):
... pos.setdefault(n, []).append(i)
...
>>> pos
{'a': [3, 9], 1: [0, 2], 2: [1, 5, 10], 3: [6, 7], 4: [4], 5: [8]}
>>> for k, v in pos.items():
... print "%s = %s" % (k, v)
...
a = [3, 9]
1 = [0, 2]
2 = [1, 5, 10]
3 = [6, 7]
4 = [4]
5 = [8]
很好的解決問題的辦法。 可以解釋我使用2x變量,「我,n」,請嗎? – user1768615
@ user1768615'enumerate'將返回帶有元組'(位置,元素)'('[(0,1),(1,2),(2,1),...]'')的迭代器。 '我,n'語法只是一個多重任務:位置爲'i',元素爲'n'。 –
是不是更簡單的使用範圍()代替枚舉? – user1768615
[你嘗試過什麼?](http://whathaveyourtried.com)另外,請澄清你的問題 - 什麼是圈子中? – thegrinner
我的意思是「if statment」和「for statment」 – user1768615