Python 如何将从列表中采样的值添加到两个嵌套字典中?
在这个代码块中,我尝试从一个列表中抽取两个值,并将它们添加到共享相同键/值结构的两个嵌套字典中的每个特定键/值对中。我已发表评论以澄清我的意图 以下是要从中随机采样的值列表 这是我尝试在相邻的嵌套字典中创建两个键/值对的范围Python 如何将从列表中采样的值添加到两个嵌套字典中?,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,在这个代码块中,我尝试从一个列表中抽取两个值,并将它们添加到共享相同键/值结构的两个嵌套字典中的每个特定键/值对中。我已发表评论以澄清我的意图 以下是要从中随机采样的值列表 这是我尝试在相邻的嵌套字典中创建两个键/值对的范围 您的主要问题似乎是您没有编写有效的Python语法 对于你描述的问题,我有几种方法可以解决。让我们首先将其作为嵌套字典进行处理,使其成为defaultdict集合。这不是代码的精确实现,而是演示如何创建和操作数据结构的近似实现: from random import sam
您的主要问题似乎是您没有编写有效的Python语法 对于你描述的问题,我有几种方法可以解决。让我们首先将其作为嵌套字典进行处理,使其成为
defaultdict
集合。这不是代码的精确实现,而是演示如何创建和操作数据结构的近似实现:
from random import sample
from collections import defaultdict
gym_list = ['reddit.com', 'amazon.com', 'twitter.com', 'linkedin.com', 'ebay.com', 'netflix.com', 'stackoverflow.com', 'github.com', 'quora.com', 'google.com']
poke_players = defaultdict(dict)
def initialize_poke_players():
if 'gyms_visited' not in poke_players['player_1']: # If first key/value pair has no value
poke_players['player_1']['gyms_visited'] = sample(gym_list, 2) # add random sample to first key/value pair
if 'gyms_visited' not in poke_players['player_2']: # If second key/value pair has no value
poke_players['player_2']['gyms_visited'] = sample(gym_list, 2) # add random sample to second key/value pair
initialize_poke_players()
print("Player 1:", poke_players['player_1']['gyms_visited'])
print("Player 2:", poke_players['player_2']['gyms_visited'])
输出
> python3 test.py
Player 1: ['twitter.com', 'google.com']
Player 2: ['reddit.com', 'linkedin.com']
>
一种更简单的单字典方法是由字符串元组组成的复合键:
from random import sample
gym_list = ['reddit.com', 'amazon.com', 'twitter.com', 'linkedin.com', 'ebay.com', 'netflix.com', 'stackoverflow.com', 'github.com', 'quora.com', 'google.com']
poke_players = {}
def initialize_poke_players():
if ('player_1', 'gyms_visited') not in poke_players: # If first key/value pair has no value
poke_players[('player_1', 'gyms_visited')] = sample(gym_list, 2) # add random sample to first key/value pair
if ('player_2', 'gyms_visited') not in poke_players: # If second key/value pair has no value
poke_players[('player_2', 'gyms_visited')] = sample(gym_list, 2) # add random sample to second key/value pair
initialize_poke_players()
print("Player 1:", poke_players[('player_1', 'gyms_visited')])
print("Player 2:", poke_players[('player_2', 'gyms_visited')])
感谢您回复中简洁明了的代码。我明白你在我的第一篇文章中关于糟糕语法的意思。我现在可以看到如何改进。
> python3 test.py
Player 1: ['twitter.com', 'google.com']
Player 2: ['reddit.com', 'linkedin.com']
>
from random import sample
gym_list = ['reddit.com', 'amazon.com', 'twitter.com', 'linkedin.com', 'ebay.com', 'netflix.com', 'stackoverflow.com', 'github.com', 'quora.com', 'google.com']
poke_players = {}
def initialize_poke_players():
if ('player_1', 'gyms_visited') not in poke_players: # If first key/value pair has no value
poke_players[('player_1', 'gyms_visited')] = sample(gym_list, 2) # add random sample to first key/value pair
if ('player_2', 'gyms_visited') not in poke_players: # If second key/value pair has no value
poke_players[('player_2', 'gyms_visited')] = sample(gym_list, 2) # add random sample to second key/value pair
initialize_poke_players()
print("Player 1:", poke_players[('player_1', 'gyms_visited')])
print("Player 2:", poke_players[('player_2', 'gyms_visited')])