问题描述
我会记录一个字母在一个单词中出现了多少次,例如“嵌入式”
import { mapState } from 'vuex';
我想通过对元素的值进行分组来打印这些元素:
computed: { ...mapState(['posts']) }
实际上如何做,即不构造循环(如果有的话)?
可选在打印散列之前,我想将其转换并关联为临时数据结构,例如my %x := {e => 3,m => 1,b => 1,d => 3,s => 2};
,然后进行打印。什么是最实用的数据结构和打印方式?
解决方法
使用注释中建议的.categorize
,您可以根据值将它们分组在一起。
%x.categorize(*.value)
这将生成一个哈希,其键是用于分类的值,而值是原始哈希($x
)中的Pairs。可以使用for
或.map
进行循环。您最初计算的字母是Pairs的关键字,可以使用.map
整齐地提取它们。
for %x.categorize(*.value) {
say "{$_.value.map(*.key).join(' and ')} {$_.key} times";
}
(可选)您还可以使用.sort
按出现次数对列表进行排序。这将首先对最低的数字进行排序,但添加一个简单的.reverse
将使最高的值首先出现。
for %x.categorize(*.value).sort.reverse {
say "{$_.value.map(*.key).join(' and ')} {$_.key} times";
}