1. Perl / Говнокод #12703

    −153

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    use Data::Dumper;
     
    my $data = [
        { one => 1, two => 2 },
        { two => 2, three => 3 },
        { three => 3, four => 4 }
    ];
     
    my @datakeys = keys %{{ map { %{ $_ } } @{ $data } }};
     
    print Dumper({ 'datakeys' => \@datakeys });

    Надо было найти уникальные ключи из массива хешей. Лучше ничего в голову не пришло.
    http://ideone.com/Wwg0B5

    Запостил: Elvenfighter, 08 Марта 2013

    Комментарии (3) RSS

    • Ах да:
      # такой вариант не катит
      my @datakeys = keys map { %{ $_ } } @{ $data };
      Ответить
      • use List::MoreUtils qw(uniq);
        my @datakeys = uniq map { keys %$_ } @$data;
        Ответить
    • Вот за что никогда не любил perl - за необходимость парсить закорючки для чтения тривиальных вещей
      >>> dicts = [{'a': 1, 'b': 2}, {'b': 2, 'c': 3}, {'c': 3, 'd': 4}]
      >>> unique_keys = {k for dict in dicts for k in dict.keys()}
      >>> unique_keys
      set(['a', 'c', 'b', 'd'])
      Ответить

    Добавить комментарий