【发布时间】:2018-08-09 22:42:07
【问题描述】:
我有这个 csv.file。假设我已经使用了DictReader,现在我有一些完整的字典列表,比如('name': 'Andrew'), ('points': 18) 等。
name points
Andrew 18
Kate 10
Jack 55
Andrew 31
Andrew 100
Jack 58
Andrew 34
Kate 22
Jack 5
Andrew 72
我要做的是返回一个像Andrew: (5, 100)这样的键值对,其中的值是:
- 我在列表中遇到过这个名字多少次;
- points 表中此名称的最大数量。
我对第一个任务没有问题,但找不到解决方案 第二个。这就是我试图做的:
name_counter = defaultdict(int)
max_points = defaultdict(int)
for dictionary in list_from_csv:
name_counter[dictionary['name']] += 1 #every time I meet the name, I add +1 to the value
max_points[dictionary['name']] = ???
我想只使用max(dictionary[points]),但 max 应该从数字的数量中选择,而不仅仅是一个。也许创建一个列表,但不确定如何。还有其他想法吗?
不胜感激。
附:在我拥有这两个字典之后,我需要根据密钥合并它们,但我希望这不是那么难。
【问题讨论】:
-
合并后的字典应该是什么样子的?
-
谷歌如何使用
groupby函数。我想你可以从那里完成。 -
你展示的不是一个充满字典的列表,它甚至不是 anything 的合法 Python 语法。如果您希望我们向您展示如何转换该输入,请给我们一个可用的示例输入。
标签: python dictionary iteration