如何从元组中提取键和值以识别重复项并将它们存储在字典中?
How to pull keys and values from a tuple to identify duplicates and store them in a dictionary?
我目前正在开发一个骰子游戏程序代理,其中的规则包括,如果有两个或多个具有相同值的骰子,这些值将翻转为相反的数字,从而影响总分。
目前,我正在尝试将骰子中的值作为元组(例如 1、1、2),并且 return 在相同的索引处以字典的形式将这些相同的副本复制给代理提供给 return 要翻转的骰子。
我目前已经使用以下函数对值进行了硬编码:
if state[0] == state[1] == state[2]:
duplicates = {}
duplicates[0] = state[0]
duplicates[1] = state[1]
duplicates[2] = state[2]
return duplicates
elif state[0] == state[1]:
duplicates = {}
duplicates[0] = state[0]
duplicates[1] = state[1]
return duplicates
elif state[1] == state[2]:
duplicates = {}
duplicates[1] = state[1]
duplicates[2] = state[2]
return duplicates
elif state[0] == state[2]:
duplicates = {}
duplicates[0] = state[0]
duplicates[2] = state[2]
duplicates = {}
return duplicates
其中状态是当前的骰子。但是,我正在尝试制作一个更通用的功能,例如2 或 5 个骰子。有谁知道我如何提取此信息并将其存储在相同索引的重复字典中更好一点吗?
非常感谢:)
有很多方法可以在 tuple/list 中查找重复项,请参阅 How do I find the duplicates in a list and create another list with them?
在您的特定情况下,您可以做很多其他事情
count_reps = {}
for s in state:
count_reps[s] = count_reps.get(s,0)+1
duplicates = {n:s for n,s in enumerate(state) if count_reps[s] > 1}
我们使用辅助字典 count_reps
,其中对于元组中的每个值,我们存储它出现的次数。比我们用它从 state
填充 duplicates
例如 state = (2,2,3,3,1,2)
count_reps
看起来像这样:
{2: 3, 3: 2, 1: 1}
和duplicates
看起来像
{0: 2, 1: 2, 2: 3, 3: 3, 5: 2}
我目前正在开发一个骰子游戏程序代理,其中的规则包括,如果有两个或多个具有相同值的骰子,这些值将翻转为相反的数字,从而影响总分。
目前,我正在尝试将骰子中的值作为元组(例如 1、1、2),并且 return 在相同的索引处以字典的形式将这些相同的副本复制给代理提供给 return 要翻转的骰子。
我目前已经使用以下函数对值进行了硬编码:
if state[0] == state[1] == state[2]:
duplicates = {}
duplicates[0] = state[0]
duplicates[1] = state[1]
duplicates[2] = state[2]
return duplicates
elif state[0] == state[1]:
duplicates = {}
duplicates[0] = state[0]
duplicates[1] = state[1]
return duplicates
elif state[1] == state[2]:
duplicates = {}
duplicates[1] = state[1]
duplicates[2] = state[2]
return duplicates
elif state[0] == state[2]:
duplicates = {}
duplicates[0] = state[0]
duplicates[2] = state[2]
duplicates = {}
return duplicates
其中状态是当前的骰子。但是,我正在尝试制作一个更通用的功能,例如2 或 5 个骰子。有谁知道我如何提取此信息并将其存储在相同索引的重复字典中更好一点吗?
非常感谢:)
有很多方法可以在 tuple/list 中查找重复项,请参阅 How do I find the duplicates in a list and create another list with them?
在您的特定情况下,您可以做很多其他事情
count_reps = {}
for s in state:
count_reps[s] = count_reps.get(s,0)+1
duplicates = {n:s for n,s in enumerate(state) if count_reps[s] > 1}
我们使用辅助字典 count_reps
,其中对于元组中的每个值,我们存储它出现的次数。比我们用它从 state
duplicates
例如 state = (2,2,3,3,1,2)
count_reps
看起来像这样:
{2: 3, 3: 2, 1: 1}
和duplicates
看起来像
{0: 2, 1: 2, 2: 3, 3: 3, 5: 2}