gpt4 book ai didi

Perl,将字符串拆分为 key :Value pairs for hash with lowercase keys without temporary array

转载 作者:行者123 更新时间:2023-12-01 06:18:38 26 4
gpt4 key购买 nike

给定一串 Key:Value 对,我想创建一个查找散列,但键的值是小写的。我可以用这段代码做到这一点

my $a="KEY1|Value1|kEy2|Value2|KeY3|Value3";
my @a = split '\|', $a;
my %b = map { $a[$_] = ( !($_ % 2) ? lc($a[$_]) : $a[$_]) } 0 .. $#a ;

生成的哈希看起来像这样 Dumper 输出:

$VAR1 = {
'key3' => 'Value3',
'key2' => 'Value2',
'key1' => 'Value1'
};

是否可以在不使用临时数组@a 的情况下直接创建哈希 %b,或者是否有更有效的方法来实现相同的结果?

编辑:我忘了说我不能为此使用外部模块。它需要是基本的 Perl。

最佳答案

您可以使用 pairmap来自 List::Util 根本不需要中间数组就可以做到这一点。

use strict;
use warnings;
use List::Util 1.29 'pairmap';
my $str="KEY1|Value1|kEy2|Value2|KeY3|Value3";
my %hash = pairmap { lc($a) => $b } split /\|/, $str;

注意:你不应该使用 $a or $b在排序(或 List::Util 对函数) block 之外。它们是用于排序的特殊全局变量,只需在范围内声明 my $a 就可以破坏该范围内的所有排序(和 List::Util 对函数)。一个简单的解决方案是,当您发现自己开始将它们用作示例变量时,立即将它们替换为 $x$y

关于Perl,将字符串拆分为 key :Value pairs for hash with lowercase keys without temporary array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52710832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com