cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
See how to use to use Text Explorer to glean valuable information from text data at April 25 webinar.
Choose Language Hide Translation Bar
View Original Published Thread

Create a list for each elements present in a list.

AlexR846
Level III

Dear All,

 

Trying to create a list for each items present in a list.

 

Already have,

MasterList = {"test1", "test2"};

 

Required,

Append the string "value" to each items present in the MasterList and have to make each item as an individual list.

 

test1value = {};

test2value = {};

 

Thanks, Alex.

1 ACCEPTED SOLUTION

Accepted Solutions
Georg
Level VII

Re: Create a list for each elements present in a list.

Great Idea of Mark. 

This may look as follows in your case. You can effectively manage many lists in an Associative Array.

 

Names Default To Here( 1 );

MasterList = {"test1", "test2"};

// many variables containing lists
For Each( {item}, Masterlist, Eval( Parse( Eval Insert( "^item^value= {};" ) ) ) );
Show( test1value, test2value );

// associative array containing lists
Master_AA = Associative Array();
For Each( {item, index}, Masterlist, Master_AA[Masterlist[index] || "value"] = {} );Master_AA["test1value"] = {1, 2, 3};
For Each( {key}, Master_AA, Show( key, Master_AA[key] ) );
Georg

View solution in original post

6 REPLIES 6
Georg
Level VII

Re: Create a list for each elements present in a list.

Probably this helps

Names Default To Here( 1 );

MasterList = {"test1", "test2"};

For Each( {item}, Masterlist, Eval( Parse( Eval Insert( "^item^value= {};" ) ) ) );
Show( test1value, test2value );
Georg

Re: Create a list for each elements present in a list.

You might want to use Associative Arrays instead of Lists.

Georg
Level VII

Re: Create a list for each elements present in a list.

Great Idea of Mark. 

This may look as follows in your case. You can effectively manage many lists in an Associative Array.

 

Names Default To Here( 1 );

MasterList = {"test1", "test2"};

// many variables containing lists
For Each( {item}, Masterlist, Eval( Parse( Eval Insert( "^item^value= {};" ) ) ) );
Show( test1value, test2value );

// associative array containing lists
Master_AA = Associative Array();
For Each( {item, index}, Masterlist, Master_AA[Masterlist[index] || "value"] = {} );Master_AA["test1value"] = {1, 2, 3};
For Each( {key}, Master_AA, Show( key, Master_AA[key] ) );
Georg
AlexR846
Level III

Re: Create a list for each elements present in a list.

Thank you Georg, & Mark !!

Both solutions did the job !!

pmroz
Super User

Re: Create a list for each elements present in a list.

Slightly different approach using an associative array:

Names Default To Here( 1 );

MasterList = {"test1", "test2"};

// associative array containing lists
Master_AA = Associative Array();
for (i = 1, i <= nitems(masterlist), i++,
	one_key = masterlist[i];
	master_aa[one_key] = {};
);

// Load the lists with some data
insertinto(master_aa["test1"], {1, 2, 3});
insertinto(master_aa["test2"], {4, 5, 6});

print(master_aa);

Output:

["test1" => {1, 2, 3}, "test2" => {4, 5, 6}]
ErraticAttack
Level VI

Re: Create a list for each elements present in a list.

Just a quick point -- using Eval( Parse( Eval Insert( ... ) ) ) can be somewhat cumbersome and slow (although the slowdown is only apparent with a great many calls).  You can avoid it by accessing the "here" namespace directly, as follows:

 

Names Default To Here( 1 );

MasterList = {"test1", "test2"};

here = Namespace( "here" );
// many variables containing lists
For Each( {item}, Masterlist, here[item || "value"] = {} );
Show( test1value, test2value );
Jordan