develooper Front page | perl.perl6.users | Postings from April 2018

Re: Using HashBags

Thread Previous
From:
Brad Gilbert
Date:
April 8, 2018 16:07
Subject:
Re: Using HashBags
Message ID:
CAD2L-T3nqu75_Czzhqht05FT4vSDKwn_RbGMgGWc3NRYuTtqBQ@mail.gmail.com
You can do the following

   my %b is BagHash = …

or

    my %b := bag …

On Sun, Apr 8, 2018 at 10:54 AM, Vittore Scolari
<vittore.scolari@gmail.com> wrote:
> I answer myself: with % you get an Hash
>
> On Sun, Apr 8, 2018 at 5:53 PM, Vittore Scolari <vittore.scolari@gmail.com>
> wrote:
>>
>> Wouldn't here be better to use the % sigil?
>>
>> my %docents = bag @rows.map: -> @row {@row[0] xx @row[1]};
>>
>>
>>
>> On Sat, Apr 7, 2018 at 1:02 PM, Fernando Santagata
>> <nando.santagata@gmail.com> wrote:
>>>
>>> Hi,
>>>
>>> I'm not sure that I've understood what you need.
>>> If you get that array of arrays from a another process @rows and you wish
>>> to convert it into a Bag you can do this:
>>>
>>> my @rows = [["JF", 1], ["JF", 2], ["MM", 2], ["MPu", 2], ["MM", 2],
>>> ["FE", 2], ["FV", 2], ["MPu", 2], ["JP", 2], ["JP", 2], ["FV", 2], ["FV",
>>> 2], ["JF", 2], ["MM", 2], ["MPu", 2], ["MM", 2], ["FE", 2], ["FV", 2],
>>> ["MPu", 2], ["JP", 2], ["JP", 2], ["JF", 4]];
>>> my Bag $docents = bag @rows.map: -> @row {@row[0] xx @row[1]};
>>> dd $docents;
>>>
>>> # Bag $docents = ("JP"=>8,"FV"=>8,"FE"=>4,"MPu"=>8,"MM"=>8,"JF"=>9).Bag
>>>
>>> Otherwise you can start collecting those pairs into a Bag from the start,
>>> but we would need more details then.
>>>
>>> HTH
>>>
>>>
>>> On Sat, Apr 7, 2018 at 12:10 PM, mimosinnet <mimosinnet@gmail.com> wrote:
>>>>
>>>> Hi all,
>>>>
>>>> I do not seem to be able to get this done with the Bag or BagHash type:
>>>>
>>>> ---
>>>> dd @rows;
>>>>
>>>>> Output: Array @rows = [["JF", 1], ["JF", 2], ["MM", 2], ["MPu", 2],
>>>>> ["MM", 2], ["FE", 2], ["FV", 2], ["MPu", 2], ["JP", 2], ["JP", 2], ["FV",
>>>>> 2], ["FV", 2], ["JF", 2], ["MM", 2], ["MPu", 2], ["MM", 2], ["FE", 2],
>>>>> ["FV", 2], ["MPu", 2], ["JP", 2], ["JP", 2], ["JF", 4]]
>>>>
>>>>
>>>> my %docents;
>>>> for @rows -> @row {
>>>>         %docents{ @row[0] } += @row[1];
>>>> }
>>>>
>>>> dd %docents;
>>>>
>>>>> Output: Hash %docents = {:FE(4), :FV(8), :JF(9), :JP(8), :MM(8),
>>>>> :MPu(8)}
>>>>
>>>>
>>>> ---
>>>>
>>>> As I understand it, this would better be achieved with the Bag or
>>>> BagHash type. What would be the easy way?
>>>>
>>>> Thanks!
>>>> --
>>>> (≧∇≦) Mimosinnet (Linux User: #463211)
>>>
>>>
>>>
>>>
>>> --
>>> Fernando Santagata
>>
>>
>

Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About