dict中的Python计数器与dict中的列表选择元素的概率

dict中的Python计数器与dict中的列表选择元素的概率,python,dictionary,Python,Dictionary,我有一个关于python字典的计数器的问题。我使用计数器建立字典(它帮助我建立邻接矩阵) 我在本例中使用namedtuple。存储的值是48-4倍 52双 让我们使用dict中的列表执行此操作: {48: ['48','48','48','48','52','52']} 现在我将从给定的键(48)中选择一个随机值。字典中的列表和带有计数器的字典的概率是多少?最好用字典里的列表来做这个?这有关系吗 我想知道dic的提取和计数器给我{48:{48,48,48,48},{52,52}或者计数器只存储

我有一个关于python字典的
计数器的问题。我使用计数器建立字典(它帮助我建立邻接矩阵)

我在本例中使用
namedtuple
。存储的值是48-4倍 52双

让我们使用dict中的列表执行此操作:

{48: ['48','48','48','48','52','52']}
现在我将从给定的键(48)中选择一个随机值。字典中的列表和带有计数器的字典的概率是多少?最好用字典里的列表来做这个?这有关系吗

我想知道dic的提取和计数器给我
{48:{48,48,48,48},{52,52}
或者计数器只存储元素的数量

真正的问题是: 我应该使用哪种方法从键中获取随机值?带列表的口述还是带计数器的口述?是一样的吗


我使用马尔可夫链生成音乐。我有一套笔记,我编了一本字典

这取决于您随机选择元素的方式

如果您正在使用,那么您希望将dict与列表值一起使用。这是因为当你在一个
计数器上迭代时,你只在键上迭代,所以
随机。选择(一些计数器)
一些计数器的所有键权重相等

如果您使用的是Python>=3.6,那么可以使用new来选择键,使用它们的值作为权重

from random import choices 
from collections import Counter

counts = Counter('Some input iterable')

print(choices(*zip(*counts.items())))
# This gives us a list containing one randomly selected key of counts
# ['e'] for example
# If you want more, you can specify a keyword argument k equal to the number of elements
#   you  want to select form the population (with replacement)
choices(*zip(*counts.items())
是执行以下操作的较短方法

keys = []
values = []
for key, value in counts.items():
    keys.append(key)
    values.append(value)
print(choices(keys, values))

我不确定我是否理解这个问题——每个例子中的概率都是相同的。真正的问题是什么?是关于构造dict,还是关于从值中提取一个随机项?我想知道dict中带计数器的元素是如何存储的,我更新了我的问题。
random.choices
计数器的上下文中选择带所有值的键
?我指的是值的总和,例如num of 42 eq 4,因此权重od 42为4@lukassz对更准确地说,
选项
可以按顺序接受两个位置参数
总体
权重
。位于
总体[i]
的元素具有权重
权重[i]
。我们正在处理
counts.items()
以便每个键值对在
population
weights
中位于相同的索引。因此
weights
的总和必须为1。如何计算此集合的
权重
{48:['48','48','48','48','48','52','52']}
(48,52)?
选项使用相对权重,因此它们不必求和为一。
keys = []
values = []
for key, value in counts.items():
    keys.append(key)
    values.append(value)
print(choices(keys, values))