我一直在尝试使用PHP/Python来找出最有效的方法来解析通过web表单上传到它的CSV文件的内容。简而言之,它包含一系列已经按字母分割的字符串,其中第一个整数表示该特定字符串出现的次数。
例如:<>之前2, f, o, o6 h e、l, l, o7一个ir p l, n, e之前我试图弄清楚如何返回每个字母的出现次数,同时考虑到它的位置(第一,最后或中间的任何地方)和字符串的总出现次数。
的例子:<>之前第一个位置:f: 2h: 6答:7最后的位置:o: 8艾凡:7中间:剩下的东西。之前谁能告诉我怎么做这个?
这些家伙是正确的,你应该尝试这个,特别是因为它不是很难,如果它是家庭作业(是吗?)这里有足够的提示:
- 使用
collections.defaultdict
定义一个基类Counter
来实现collections.Counter
,就像3.1中的新Counter一样。它必须有一个update()方法,您可以使用频率参数重载该方法,默认为...,frequency=1)
。-它还需要一个most_common()
方法,你可以直接使用max(Counter.values())
,不需要转换为列表然后排序。然后使用列表推导找出频率最高的字母。注意定义如何处理具有最大频率的多个字母的情况。 - 申报三个
Counters firstLetter, middleLetters, lastLetter
- 每行:
- 将行转换为列表通过分割','将每行解包(helper fn,或直接在3.x中解包元组)到
(freq,first,middle,last)
,其中middle
本身就是一个元组。或者直接使用索引:a[0],a[1],a[2:-2],a[-1]
- 使用集合计算字母计数。计数器或默认值,并将所有值乘以频率
- 使用
most_common()
或使用推导式查找频率最大的字母。哦,你根本不需要那个。