Getting Lists of Summed Nested Dictionary Values
我正在尝试编写程序的一部分,其中用户输入一个目标词(
例如:
1 2 3 4 5 | mainDict = { 'x': {'one': 1, 'blue': 1, 'green' :1}, 'y': {'red': 1, 'blue': 2, 'two': 1}, 'z': {'one': 1, 'green': 1, 'red': 1} } |
其中嵌套字典中的所有值都被分配为整数。
用户可以输入
1 | targetDict = mainDict['x'] |
号
然后,程序应允许用户再次输入单词,但这次输入的每个单词都会附加到查找列表中,例如用户输入
1 | lookup = ['y', 'z'] |
然后,程序应该运行嵌套字典,对于每个具有对应键的值(如
1 | targetOutput = [[2], [1, 1]] |
。
因为在嵌套的dict
以下是我所拥有的功能失调代码的一个表示:
1 2 3 4 5 6 7 8 9 10 11 12 | targetOutput = [] targetDict = mainDict[targetWord] for tkey in targetDict: tt = [] for word in lookup: for wkey in primaryDict[word]: if tkey == wkey: tt.append(targetDict[tkey]) tl.append(sum(tt)) print((pl)) |
最后的sum函数是因为我的实际最终输出应该是嵌套列表中值的总和,类似于:
1 | tl = [[2], [2]] |
。
我还试图实现相反的结果,在查找中的每个键的另一个列表中,它返回一个嵌套列表,其中包含
1 | ll = [[2], [2]] |
。
我的问题是,如何修复我的代码,以便它输出上面的2个列表?我对字典很陌生。
字典上的
1 2 3 4 | for word in lookup: other_dict = mainDict[word] common_keys = targetDict.keys() & other_dict targetOutput.append([other_dict[common] for common in common_keys]) |
1 2 3 4 5 6 7 8 9 10 | >>> mainDict = { ... 'x': {'one': 1, 'blue': 1, 'green' :1}, ... 'y': {'red': 1, 'blue': 2, 'two': 1}, ... 'z': {'one': 1, 'green': 1, 'red': 1} ... } >>> targetDict = mainDict['x'] >>> targetDict.keys() & mainDict['y'] {'blue'} >>> targetDict.keys() & mainDict['z'] {'green', 'one'} |
号
如果要求和这些值,只需将相同的值序列传递给
1 2 3 4 5 | for word in lookup: other_dict = mainDict[word] common_keys = targetDict.keys() & other_dict summed_values = sum(other_dict[common] for common in common_keys) targetOutput.append(summed_values) |
在另一个列表中包装求和值没有意义,因为只有一个求和。上面给出了一个带有