gpt4 book ai didi

python - 有没有办法遍历两个字典中的所有键并更改所有重复的项目,以便字典的项目全部不同

转载 作者:太空宇宙 更新时间:2023-11-03 20:36:09 25 4
gpt4 key购买 nike

我是一名新程序员,正在为人员分配编写一些代码,我需要确保两个具有相同键的字典没有相同的项目。我需要搜索相同的项目并更改它们。

我正在使用 python 3,并尝试过使用 for 循环,但没有任何效果,但我猜这是因为我对它们只有基本的了解。

在下面的代码中,我似乎可以检查每个变量并单独更改变量,但出于学习的目的以及我的完整脚本中的实际内容,我喜欢按照我所描述的方式进行操作。

from random import choice

names = ['jacob', 'josh', 'alex', 'tyler']
weapons = ['swords', 'ax', 'rock', 'nothing']
armor = ['chest plate', 'none', 'vest', 'mask']

# I dont want to change values through these variables if possible
p1_name = choice(names)
p2_name = choice(names)

p1_weapon = choice(weapons)
p2_weapon = choice(weapons)

p1_armor = choice(armor)
p2_armor = choice(armor)

#here are the dictionarys I want to change
p1 = {'name': p1_name, 'weapon': p1_weapon, 'armor': p1_armor}
p2 = {'name': p2_name, 'weapon': p2_weapon, 'armor': p2_armor}

我也知道我可能可以手动检查每个键,即:

if p1['name'] == p2['name']: 

但如果可以通过某种循环来做到这一点,我更喜欢这样做,因为在我的原始代码中,字典会改变。

最佳答案

您也可以在字典中收集列表,然后假设您的字典具有类似的键(如您的示例所示),您可以使用如下循环:

database = {'name': ['jacob', 'josh', 'alex', 'tyler'],
'weapon': ['swords', 'ax', 'rock', 'nothing'],
'armor': ['chest plate', 'none', 'vest', 'mask']}

for key in p1.keys():
if p1[key] == p2[key]:
p2[key] = choice(database[key])
<小时/>

为了完全避免这种检查,您实际上可以从一开始就使用random.sample来确保不会分配两个相似的项目。 :

from random import sample

names = ['jacob', 'josh', 'alex', 'tyler']
weapons = ['swords', 'ax', 'rock', 'nothing']
armor = ['chest plate', 'none', 'vest', 'mask']

p1_name, p2_name = sample(names, 2)

p1_weapon, p2_weapon = sample(weapons, 2)

p1_armor, p2_armor = sample(armor, 2)

p1 = {'name': p1_name, 'weapon': p1_weapon, 'armor': p1_armor}
p2 = {'name': p2_name, 'weapon': p2_weapon, 'armor': p2_armor}

关于python - 有没有办法遍历两个字典中的所有键并更改所有重复的项目,以便字典的项目全部不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57154751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com