Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обьединение 2 массивов, слияние двух массивов в хеш 
V
    Опции темы
joaquin
Дата 26.3.2011, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 9.10.2010

Репутация: нет
Всего: нет



Добрый день уважаемые форумчане.
Имеется два массива,предположим: 
@array1=qw(1 2 3)
@array2=qw(he she they)
Необходимо обьединить 2 массива в хеш так,чтобы первый элемент первого массива был ключом хеша значением которого является первый элемент второго хеша.
Заранее спасибо.
PM MAIL   Вверх
gcc
Дата 26.3.2011, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



Код

$ perl -MData::Dumper -e '@a1=qw(1 2 3); @a2=qw(he she they); %$h = map { $_ => 1} @a1,@a2; print Dumper $h'

Код

$VAR1 = {
          'she' => 1,
          'they' => 1,
          '1' => 1,
          'he' => 1,
          '3' => 1,
          '2' => 1
        };


PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 26.3.2011, 17:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



полностью не дочитал задание, вот вариант более подходящий:

Код

perl -MData::Dumper -e '@a1=qw(1 2 3); @a2=qw(he she they); %$h = map { $a1[$_] =>  $a2[$_] } 0..$#a1; print Dumper $h'
$VAR1 = {
          '1' => 'he',
          '3' => 'they',
          '2' => 'she'
        };



Это сообщение отредактировал(а) gcc - 26.3.2011, 17:54
PM WWW ICQ Skype GTalk Jabber   Вверх
joaquin
Дата 26.3.2011, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 9.10.2010

Репутация: нет
Всего: нет



Нужно слияние в итоге которого получится хеш наподобие приведенного ниже:
%хеш = {
                 'he' => '1',
                 'she' => '2',
                 'they' => '3'
                }

Добавлено через 6 минут и 50 секунд
Спасибо пользователю gcc за предоставленный ответ(помогло).А есть ли решение скажем без применения модуля?В обычном цикле перечислить элементы массивов с последующим добавлением в хеш.Бьюсь над этой задачей.
PM MAIL   Вверх
joaquin
Дата 26.3.2011, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 9.10.2010

Репутация: нет
Всего: нет



Решеноsmile
#!/usr/bin/perl

@array1=qw(1 2 3 );
@array2=qw(he she they);

for ($i=0;$i<@array1;$i++) {
$k=$array1[$i];
$hash{$k}=$array2[$i];
}
направление  нашел в ответе gcc ,за что ему еще раз большое спасибо! 
PM MAIL   Вверх
Pfailed
Дата 26.3.2011, 19:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



Вот еще интересный вариант
Код

use List::MoreUtils 'pairwise';

my @a = qw(1 2 3);
my @b = qw(a b c);
my %hash = pairwise { $a => $b } @a, @b;




--------------------
PM MAIL   Вверх
ming
Дата 30.3.2011, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 30.1.2009
Где: Новосибирск

Репутация: 2
Всего: 3



Код

my %hash;
@hash{@array1} = @array2;

PM MAIL ICQ Jabber   Вверх
vivu
Дата 30.3.2011, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 3.11.2009

Репутация: нет
Всего: нет



Голосую за вариант предложенный ming'ом. Это самый красивый вариант, из Perl Cookbook.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0848 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.