Advertisement
furas

Zliczanie serii danych (z filtrowaniem?)

Jan 21st, 2015
327
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.51 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. '''zliczanie wszystkich serii z pomoca defaultdict'''
  4.  
  5. import collections
  6.  
  7. a = [1,1,1,2,3,1,1,3,3,3,3,4,4,5,6,4,5,5]
  8.  
  9. results = collections.defaultdict(list)
  10.  
  11. prev = None
  12.  
  13. for i in a:
  14.     if i != prev:
  15.         results[i].append(0)
  16.         prev = i
  17.  
  18.     results[i][-1] += 1
  19.    
  20. print results
  21.  
  22. # defaultdict(<type 'list'>, {1: [3, 2], 2: [1], 3: [1, 4], 4: [2, 1], 5: [1, 2], 6: [1]})
  23.  
  24. #----------------------------------------------------------------------
  25.  
  26. '''zliczanie wszystkich serii bez pomocy defaultdict'''
  27.  
  28. a = [1,1,1,2,3,1,1,3,3,3,3,4,4,5,6,4,5,5]
  29.  
  30. results = {}
  31.  
  32. prev = None
  33.  
  34. for i in a:
  35.     if i != prev:
  36.         if i not in results:
  37.             results[i] = []
  38.         results[i].append(0)
  39.         prev = i
  40.  
  41.     results[i][-1] += 1
  42.    
  43. print results
  44.  
  45. # {1: [3, 2], 2: [1], 3: [1, 4], 4: [2, 1], 5: [1, 2], 6: [1]}
  46.  
  47. #----------------------------------------------------------------------
  48.  
  49. '''zliczanie serii z pominieciem serii jednoelementowych'''
  50.  
  51. a = [1,1,1,2,3,1,1,3,3,3,3,4,4,5,6,4,5,5]
  52.  
  53. results = {}
  54.  
  55. prev = None
  56. count = 0
  57.  
  58. a.append(None) # wymaga dodatkowego oznaczenie konca listy
  59.  
  60. for i in a:
  61.     if i != prev:
  62.         if count > 1:
  63.             if prev not in results:
  64.                 results[prev] = []
  65.             results[prev].append(count)
  66.         prev = i
  67.         count = 0
  68.  
  69.     count += 1
  70.    
  71. print results
  72.  
  73. # {1: [3, 2], 3: [4], 4: [2], 5: [2]}
  74.  
  75. #----------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement