에 다중 값 해시를 반전 I는 다음과 같습니다 해시를 가지고있다. 어떻게 든 역순 함수를 사용해야합니까?펄
참고 : 항상 원래 해시를 반복하고 새 해시에 따라 키와 값을 할당 할 수 있습니다. 더 매끄러운 방법이 있는지 알고 싶었습니다.
에 다중 값 해시를 반전 I는 다음과 같습니다 해시를 가지고있다. 어떻게 든 역순 함수를 사용해야합니까?펄
참고 : 항상 원래 해시를 반복하고 새 해시에 따라 키와 값을 할당 할 수 있습니다. 더 매끄러운 방법이 있는지 알고 싶었습니다.
는 매끄러운 방법이 필요하지 마십시오
my %h = (
bmw => { id => 1, color => "brown" } ,
mercedes => { id => 2, color => "black" }
);
my %j = map { ($h{$_}{id} => $_) } keys %h;
for (keys %j) {
print "$_ $j{$_}\n";
}
출력 : 당신이 게시 한 무엇
$ ./silly.pl 1 bmw 2 mercedes
이 유효 펄 아니지만, 내가 당신의 뜻을 생각합니다. 이를 수행하는 한 가지 방법은 hash slice과지도를 사용하는 것입니다.
my %hash = (
bmw => { id => 1, color => 'brown' },
mercedes => { id => 2, color => 'black' },
);
my %new_hash;
@new_hash{ map { $_->{id} } values %hash } = keys %hash;
나는 우리 대답 중 하나를 받아 들여야한다고 생각합니다. Kinopiko의 한 라이너보다 어떻게 더 매끄럽게 할 수 있습니까? – masonk