从模板工具包中的键中查找哈希值

find hash value from key in template toolkit

有简单的散列,用于填充 select 选项。我想按值排序,但无法打印键...

[%- FOREACH val IN myList.values.sort -%]<option value="[%- myList.$val.key -%]">[%- val -%]</option>[% END %]

KEY 即将失效.....我尝试了很多方法,但它不起作用。

因此 select 选项如下:

<option value="">roger1</option>

所有键和值都是唯一的。

如果我从散列中知道值,如何获取密钥?

通过按值实现自定义排序,这将很容易做到:

my @keys = sort { $hash{$a} cmp $hash{$b} } keys(%hash);

不幸的是,查看 TT 中可用的 hash virtual methods,我认为没有办法仅在您的模板中执行此操作。您首先需要通过上面的 sort 或反转散列来在代码中对数据进行一些处理:

my %inverted = reverse(%hash);

如果反转哈希,您可以使用 TT pairs 方法一次获得 key/value 对的排序列表。

您可以使用 pairs vmethod 获取 key/value 对的列表,然后您可以将其排序为您想要的顺序。

[% myList = { first => 'ZZZ', second => 'YYY', third => 'XXX' };
   FOREACH option IN myList.pairs.sort('value') -%]
<option value="[% option.key %]">[% option.value %]</option>
[% END -%]

输出:

<option value="third">XXX</option>
<option value="second">YYY</option>
<option value="first">ZZZ</option>