我有一本这样的字典:
{('20144', 'Wirtschaftskammer Österreich Fachverband der Telekommunikations- und Rundfunkunternehmungen', 'Bezirksrundschau Oberösterreich', '4'): 12321.88, ('20143', 'Wirtschaftskammer Niederösterreich Fachgruppe Unternehmensberatung und Informationstechnologie NÖ', 'trend', '31'): 5700.53, ('20144', 'Wirtschaftskammer Tirol - Sparte Gewerbe und Handwerk Innung der Lebensmittelgewerbe', 'ORF Radio Tirol', '4'): 5861.56, ('20144', 'Bundesministerium für Land- und Forstwirtschaft Umwelt und Wasserwirtschaft', 'Weekend Magazin', '2'): 17355.1, ('20144', 'Bundesministerium für Land- und Forstwirtschaft Umwelt und Wasserwirtschaft', 'Woman', '2'): 12911.5, ('20144', 'Bundesministerium für Wissenschaft Forschung und Wirtschaft', 'Die Presse', '31'): 30965.4, ('20143', 'Bundesministerium für Europa Integration und Äußeres', 'Kronen Zeitung', '4'): 52490.46,.......)}
我想对键前面有相同数字(例如20144
)和末尾有相同数字(例如2
或31
)的所有值求和。你知道吗
我曾考虑过听写理解,但我正在努力比较我需要的关键。我怎样比较它们?你知道吗
您可以使用
itertools.groupby
。看看下面的代码是否适合您(我使用d
作为您的dict)。你知道吗编辑:需要对dict进行排序
解决方案:
输出:
举个例子,这就是
trimmed
循环后的for
样子:说明:
for
循环遍历示例数据中的数据键(k
)和键值(v
)。如果键(k[0],k[-1])
(例如,键元组中的第一个和最后一个值('20144','4'):
)在新字典trimmed
中不存在,则创建一个空列表并附加值(v
)。如果键确实存在,则只需附加值。你知道吗完成
trimmed
字典之后,一个简单的字典理解将所有这些列表相加。你知道吗编辑:
正如在注释中指出的,如果性能有问题,您也可以使用来自
collections
的defaultdict:这里的值存储在
trimmed
。trimmed
defaultdict中新初始化的键将是0.0
。然后就可以在适当的地方添加v
。你知道吗这可以得到您想要的结果:
输出:
相关问题 更多 >
编程相关推荐