07_dict.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. emptyDict = dict()
  2. assert len(emptyDict) == 0
  3. tinydict = {'Name': 'Tom', 'Age': 7, 'Class': 'First'}
  4. assert tinydict['Name'] == 'Tom';assert tinydict['Age'] == 7
  5. tinydict['Age'] = 8;tinydict['School'] = "aaa"
  6. assert tinydict['Age'] == 8;assert tinydict['School'] == "aaa"
  7. del tinydict['Name']
  8. assert len(tinydict) == 3
  9. tinydict.clear()
  10. assert len(tinydict) == 0
  11. dict1 = {'user':'circle','num':[1,2,3]}
  12. dict2 = dict1.copy()
  13. for k,v in dict1.items():
  14. assert dict2[k] == v
  15. for t in dict1.items():
  16. assert t == ('user', 'circle') or t == ('num', [1, 2, 3])
  17. tinydict = {'Name': 'circle', 'Age': 7}
  18. tinydict2 = {'Sex': 'female' }
  19. assert len(tinydict) == 2
  20. assert len(tinydict2) == 1
  21. tinydict.update(tinydict2)
  22. updated_dict = {'Name': 'circle', 'Age': 7, 'Sex': 'female'}
  23. for k,v in tinydict.items():
  24. assert updated_dict[k] == v
  25. assert len(tinydict) == 3
  26. assert tinydict == updated_dict
  27. dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}
  28. # dict is now ordered
  29. assert dishes.keys() == ('eggs', 'sausage', 'bacon', 'spam')
  30. assert dishes.values() == (2, 1, 1, 500)
  31. d={1:"a",2:"b",3:"c"}
  32. result=[]
  33. for k,v in d.items():
  34. result.append(k)
  35. result.append(v)
  36. assert len(result) == 6
  37. del d[2]
  38. assert len(d) == 2
  39. assert d.keys() == (1, 3)
  40. assert d.values() == ('a', 'c')
  41. del d[1]
  42. del d[3]
  43. assert len(d) == 0
  44. # test __eq__
  45. d1 = {1:2, 3:4}
  46. d2 = {3:4, 1:2}
  47. d3 = {1:2, 3:4, 5:6}
  48. assert d1 == d2
  49. assert d1 != d3
  50. a = dict([(1, 2), (3, 4)])
  51. assert a == {1: 2, 3: 4}
  52. assert a.pop(1) == 2
  53. assert a == {3: 4}
  54. assert a.pop(3) == 4
  55. assert a == {}
  56. # unpacking builder
  57. a = {1:2, 3:4}
  58. b = {**a, 5:6, **a}
  59. assert b == {1: 2, 3: 4, 5: 6}
  60. a = {}
  61. b = {**a, 1:2, 3:4}
  62. assert b == {1: 2, 3: 4}
  63. a = {1:2, 3:4, 7:8}
  64. b = {**a, 1:5, 3:6}
  65. c = {**a, **b}
  66. assert c == {1: 5, 3: 6, 7: 8}
  67. a = {}
  68. for i in range(1000):
  69. a[i] = i
  70. assert len(a) == 1000
  71. for i in range(1000):
  72. del a[i]
  73. assert len(a) == 0
  74. a = {
  75. str(i): i
  76. for i in range(10)
  77. }
  78. for i, s in enumerate(a):
  79. assert s == str(i)
  80. a = {'g': 0}
  81. a['ball_3'] = 0
  82. a['ball_4'] = 0
  83. assert a.keys() == ('g', 'ball_3', 'ball_4')
  84. del a['ball_3']
  85. assert a.keys() == ('g', 'ball_4')
  86. del a['ball_4']
  87. assert a.keys() == ('g',)
  88. del a['g']
  89. assert len(a) == 0
  90. # ultra test!!
  91. a = {'0': 0, '1': 1}
  92. for i in range(2, 1000):
  93. a[str(i)] = i
  94. del a[str(i - 2)]
  95. assert a[str(i - 1)] == i - 1
  96. a = {'0': 0, '1': 1}
  97. b = ['0', '1']
  98. # dict delete test
  99. data = []
  100. j = 6
  101. for i in range(65535):
  102. j = ((j*5+1) % 65535)
  103. data.append(str(j))
  104. for i in range(len(data)):
  105. z = data[i]
  106. a[z] = i
  107. b.append(z)
  108. if i % 3 == 0:
  109. y = b.pop()
  110. del a[y]
  111. # namedict delete test
  112. class A: pass
  113. a = A()
  114. b = ['0', '1']
  115. for i in range(len(data)):
  116. z = data[i]
  117. setattr(a, str(z), i)
  118. b.append(z)
  119. if i % 3 == 0:
  120. y = b.pop()
  121. delattr(a, y)
  122. a = {1: 2, 3: 4}
  123. assert a.pop(1) == 2
  124. try:
  125. a.pop(1)
  126. exit(1)
  127. except KeyError:
  128. pass
  129. assert a.pop(1, None) is None
  130. try:
  131. a.pop(1, 2, 3)
  132. exit(1)
  133. except TypeError:
  134. pass
  135. a = {1: 2, 3: 4}
  136. a['a'] = a
  137. assert repr(a) == "{1: 2, 3: 4, 'a': {...}}"
  138. # test gc
  139. import gc
  140. gc.collect()
  141. for k, v in a.items():
  142. pass
  143. assert gc.collect() == 1