从函数的输出自动重写字典中的值



我正在尝试在Python中编写一个猜谜游戏。我有一个名为bingo_calculator()的函数,它从字典值中获取一个12个字符的Y/N字符串作为参数(即ynnynynyyyn),然后根据游戏规则返回一个整数值。

我的方法是复制字典(这样原始的猜测就不会被覆盖),并让函数计算整数值,并用新的计算值替换复制字典中的字符串。从这里开始,我要对整数按降序排序。我不知道如何使字典的值自动更新对应于函数的输出。

bingo_entries_190_copy = bingoGuesses190.bingo_entries_190.copy() #makes a copy of the dictionary
for value in bingo_entries_190_copy.values():
print(bingo_calculator(value)) # outputs the integers on the terminal 

这是词典的一个示例:

bingo_entries_190_copy = {
'Craig': 'NNNNNYNYNYYY',
'Hirohito': 'YNNNNNNYNYNN',
'Elemér': 'NYNNYNYYNYYY',
'Muddy': 'NNYNYNYYNNYY',
'Kamen': 'NNNNNYYYYYYN',
'Hiram': 'NNYNNNYNNNYY',
'Rin': 'NYNNNYYBYNNN',
'Gessica':  'YNNNNYNYNYNN',
'Pavlina': 'NNNYNYNNNNYY'
}

期望的输出将是:

bingo_entries_190_copy = {
'Muddy': 480,
'Pavlina': 430
'Hiram': 380,
'Craig': 160,
'Elemér': 160,
'Hirohito': 30,
'Gessica':  10,
'Kamen': -30,
'Rin': -110,
}

,其中12个字符的Y/N字符串通过bingo_calculator()传递时返回整数。然后我需要把这些项按整数降序排序

我该怎么办?

这是你要找的吗?

guess_results = {}
for key in bingoGuesses190:
guess_results[key] = bingo_calculator(bingoGuesses190[key])

同时打印字典并按整数值降序排序:

for entry in sorted(guess_results, key=guess_results.get, reverse=True):
print(entry, guess_results[entry])

您可以简单地将一个新值映射到字典中的每个名称键。下面是我如何编辑你的代码:

bingo_entries_190_copy = bingoGuesses190.bingo_entries_190.copy() #makes a copy of the dictionary
for key in bingo_entries_190_copy.keys():
bingo_entries_190_copy[key] = bingo_calculator(bingo_entries_190_copy[key])

我希望这对你有帮助:)

最新更新