【问题标题】:Assigning keys and storing in a dictionary Python分配键并存储在字典中 Python
【发布时间】:2021-10-06 11:35:03
【问题描述】:

对于掷六面骰子的事件。我需要随机模拟事件 1000 次,并为骰子上的每个数字绘制结果直方图。我想将每个数字的结果分配给具有相同值的键(1 表示 1 的数量{1:164...})。

我需要帮助分配键并将所有内容存储在字典中

import random
test_data = [0, 0, 0, 0, 0, 0] #this will keep track of the results
n = 1000 # number of simulations
 
 
for i in range(n):
  result = random.randint(1, 6)
  test_data[result - 1] = test_data[result - 1] + 1
 
for i in range(len(test_data)):
  print ("Number of ", i+1, "'s: ", test_data[i])

【问题讨论】:

    标签: python numpy dictionary random


    【解决方案1】:
    dic = dict()
    for i in range(len(test_data)):
        dic[i+1] = test_data[i]
    

    【讨论】:

    • 您正在重新分配值而不是递增
    • 我使用的是range(len(test_data)),即6,i的值每次迭代都会改变。
    • 如果你想从列表中创建字典那么为什么要使用for循环dict(zip(range(1, 7), test_data))
    【解决方案2】:

    您可以声明一个包含 1-6 键的字典,然后增加每个键的值。详情可见Python documentation for Dictionaries

    要声明一个包含 1-6 键的字典,您可以创建一个包含硬编码键值对的字典,例如:

    test_data = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0}
    

    或者你可以使用(感谢@deadshot):

    test_data = dict.fromkeys(range(1, 7), 0)
    

    代码:

    import random
    
    
    test_data = dict.fromkeys(range(1, 7), 0)
    #test_data = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0}
    
    n = 1000 # number of simulations
    
    for i in range(n):
      result = random.randint(1, 6)
      test_data[result] = test_data[result] + 1
     
    for i in test_data:
      print ("Number of "+str(i)+"'s: "+str(test_data[i]))
    

    输出:

    Number of 1's: 178
    Number of 2's: 172
    Number of 3's: 150
    Number of 4's: 166
    Number of 5's: 160
    Number of 6's: 174
    

    参考资料:

    【讨论】:

    • 对于字典创建你可以这样做dict.fromkeys(range(1, 7), 0)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 2021-07-26
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多