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')])