- def fun(a):
- dic = {} # 用字典存放出现的数字和它出现的位置{数字:{位置的集合set}}
- for i in range(len(a)):
- for j in range(len(a[i])):
- dic.setdefault(a[i][j], {(i, j)}) # 若出现新的数字就把它加入字典,并设置位置集合为仅包含当前位置的集合
- dic[a[i][j]].add((i, j)) # 把新的位置加入相应的集合中
- for each_item in dic.items():
- print(str(each_item[0]) + ":" + str(len(each_item[1])) + " " + str(list(each_item[1])))
- # 输出为 数字:出现的次数 位置集合
- a = [[1, 2, 7, 6], [2, 3, 8, 7], [3, 4, 9, 8], [4, 5, 10, 9], [6, 7, 12, 11],
- [7, 8, 13, 12], [8, 9, 14, 13], [9, 10, 15, 14], [11, 12, 17, 16],
- [12, 13, 18, 17], [13, 14, 19, 18], [14, 15, 20, 19], [16, 17, 22, 21],
- [17, 18, 23, 22], [18, 19, 24, 23], [19, 20, 25, 24]]
- fun(a)
复制代码
输出- 1:1 [(0, 0)]
- 2:2 [(0, 1), (1, 0)]
- 3:2 [(2, 0), (1, 1)]
- 4:2 [(3, 0), (2, 1)]
- 5:1 [(3, 1)]
- 6:2 [(0, 3), (4, 0)]
- 7:4 [(1, 3), (4, 1), (0, 2), (5, 0)]
- 8:4 [(1, 2), (5, 1), (2, 3), (6, 0)]
- 9:4 [(6, 1), (7, 0), (3, 3), (2, 2)]
- 10:2 [(3, 2), (7, 1)]
- 11:2 [(8, 0), (4, 3)]
- 12:4 [(8, 1), (4, 2), (9, 0), (5, 3)]
- 13:4 [(6, 3), (10, 0), (5, 2), (9, 1)]
- 14:4 [(11, 0), (7, 3), (6, 2), (10, 1)]
- 15:2 [(11, 1), (7, 2)]
- 16:2 [(8, 3), (12, 0)]
- 17:4 [(9, 3), (12, 1), (8, 2), (13, 0)]
- 18:4 [(9, 2), (13, 1), (10, 3), (14, 0)]
- 19:4 [(14, 1), (15, 0), (11, 3), (10, 2)]
- 20:2 [(11, 2), (15, 1)]
- 21:1 [(12, 3)]
- 22:2 [(12, 2), (13, 3)]
- 23:2 [(14, 3), (13, 2)]
- 24:2 [(15, 3), (14, 2)]
- 25:1 [(15, 2)]
复制代码
|