如何从列表中的 python 个值中随机抽样?
How to randomly sample from python values in a list?
我在 python defauldict
中有一个股票代码列表作为值,它们的扇区作为键。我想从每个值中随机抽取一两个并将它们放在自己的列表中,然后做一些事情,然后再次随机抽样并这样做 50 或 100 次。
这可能吗?
这是字典的样本。
sector_dict = defaultdict(list,
{'Technology': ['AAPL', 'ADBE', 'AMD', 'AMAT', 'FSLR', 'GPRO', 'IBM', 'MSFT', 'MU',
'QCOM', 'TXN', 'XLNX', 'CRM'],
'Healthcare': ['ABT', 'GILD', 'MDT', 'BMY'],
'Consumer Cyclical': ['AMZN', 'ANF', 'BABA', 'BBY', 'BZUN', 'CMG', 'EBAY', 'GM', 'HD',
'JD', 'LULU', 'MCD', 'NKE', 'TSLA', 'UA', 'GME'],
'Energy': ['APA', 'HAL', 'PBR', 'SLB', 'CVX'],
'Industrials': ['BA', 'CAT', 'DE', 'FDX', 'HON', 'UAL'],
'Communication Services': ['BIDU', 'FB', 'GOOG', 'NFLX', 'SNAP', 'TWTR', 'ZM', 'CMCSA'],
'Real Estate': ['BRX', 'SPG'],
'Consumer Defensive': ['COST'],
'Basic Materials': ['FCX', 'NEM', 'CLF'],
'Financial Services': ['GS', 'HIG', 'LYG', 'MA', 'V', 'C', 'JPM', 'MS']})
替换可以True
。唯一的限制是至少应从每个键中选择一个代码。我该怎么做?
当我尝试时,我得到的是一个列表列表,而我试图获得的只是一个值列表(代码)。
这是我的尝试:
import random
random_port = []
for key, val in sector_dict.items():
random_port.append(random.sample(val, 1))
random_port
尝试:
random_port = []
for value in sector_dict.values():
random_port += random.sample(value, min(len(value), 2))
在下面我稍微修改了你的代码 select 每个类别的一两只股票:
import random
random_list = []
for key, val in sector_dict.items():
random_list.extend(random.sample(val, min(len(val), random.randint(1,2))))
print(random_list)
我在 python defauldict
中有一个股票代码列表作为值,它们的扇区作为键。我想从每个值中随机抽取一两个并将它们放在自己的列表中,然后做一些事情,然后再次随机抽样并这样做 50 或 100 次。
这可能吗?
这是字典的样本。
sector_dict = defaultdict(list,
{'Technology': ['AAPL', 'ADBE', 'AMD', 'AMAT', 'FSLR', 'GPRO', 'IBM', 'MSFT', 'MU',
'QCOM', 'TXN', 'XLNX', 'CRM'],
'Healthcare': ['ABT', 'GILD', 'MDT', 'BMY'],
'Consumer Cyclical': ['AMZN', 'ANF', 'BABA', 'BBY', 'BZUN', 'CMG', 'EBAY', 'GM', 'HD',
'JD', 'LULU', 'MCD', 'NKE', 'TSLA', 'UA', 'GME'],
'Energy': ['APA', 'HAL', 'PBR', 'SLB', 'CVX'],
'Industrials': ['BA', 'CAT', 'DE', 'FDX', 'HON', 'UAL'],
'Communication Services': ['BIDU', 'FB', 'GOOG', 'NFLX', 'SNAP', 'TWTR', 'ZM', 'CMCSA'],
'Real Estate': ['BRX', 'SPG'],
'Consumer Defensive': ['COST'],
'Basic Materials': ['FCX', 'NEM', 'CLF'],
'Financial Services': ['GS', 'HIG', 'LYG', 'MA', 'V', 'C', 'JPM', 'MS']})
替换可以True
。唯一的限制是至少应从每个键中选择一个代码。我该怎么做?
当我尝试时,我得到的是一个列表列表,而我试图获得的只是一个值列表(代码)。
这是我的尝试:
import random
random_port = []
for key, val in sector_dict.items():
random_port.append(random.sample(val, 1))
random_port
尝试:
random_port = []
for value in sector_dict.values():
random_port += random.sample(value, min(len(value), 2))
在下面我稍微修改了你的代码 select 每个类别的一两只股票:
import random
random_list = []
for key, val in sector_dict.items():
random_list.extend(random.sample(val, min(len(val), random.randint(1,2))))
print(random_list)