通过在Raku中将其值分组来打印哈希元素

问题描述

我会记录一个字母在一个单词中出现了多少次,例如“嵌入式”

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";
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...