Iterate over keys of association
up vote
3
down vote
favorite
How do you iterate over the keys or rules of an association (in any order)? E.g. for
<|"0"->"a", "1"->"b", "2"->"c"|>
I would like to either iterate over "0"
, "1"
, "2"
or tuples containing each key and value.
For example, something that performed the equivalent of a python dictionary's items
, method would be ideal (which returns a list (or iterator) in the form [(key1, value1), ...]
, so {{"0", "a"}, {"1", "b"}, {"2", "c"}}
here).
associations
add a comment |
up vote
3
down vote
favorite
How do you iterate over the keys or rules of an association (in any order)? E.g. for
<|"0"->"a", "1"->"b", "2"->"c"|>
I would like to either iterate over "0"
, "1"
, "2"
or tuples containing each key and value.
For example, something that performed the equivalent of a python dictionary's items
, method would be ideal (which returns a list (or iterator) in the form [(key1, value1), ...]
, so {{"0", "a"}, {"1", "b"}, {"2", "c"}}
here).
associations
1
Simply useMap
,KeyValueMap
orKeyMap
?
– Henrik Schumacher
Dec 5 at 19:20
Can you tell what exactly do you want to do?
– Kuba♦
Dec 5 at 21:42
Woooops! Done! :)
– SLesslyTall
Dec 6 at 7:40
@SLesslyTall You see, you wantKeyValueMap[List] @ asso
but who could've known :)
– Kuba♦
Dec 6 at 7:53
add a comment |
up vote
3
down vote
favorite
up vote
3
down vote
favorite
How do you iterate over the keys or rules of an association (in any order)? E.g. for
<|"0"->"a", "1"->"b", "2"->"c"|>
I would like to either iterate over "0"
, "1"
, "2"
or tuples containing each key and value.
For example, something that performed the equivalent of a python dictionary's items
, method would be ideal (which returns a list (or iterator) in the form [(key1, value1), ...]
, so {{"0", "a"}, {"1", "b"}, {"2", "c"}}
here).
associations
How do you iterate over the keys or rules of an association (in any order)? E.g. for
<|"0"->"a", "1"->"b", "2"->"c"|>
I would like to either iterate over "0"
, "1"
, "2"
or tuples containing each key and value.
For example, something that performed the equivalent of a python dictionary's items
, method would be ideal (which returns a list (or iterator) in the form [(key1, value1), ...]
, so {{"0", "a"}, {"1", "b"}, {"2", "c"}}
here).
associations
associations
edited Dec 6 at 7:40
asked Dec 5 at 19:15
SLesslyTall
22317
22317
1
Simply useMap
,KeyValueMap
orKeyMap
?
– Henrik Schumacher
Dec 5 at 19:20
Can you tell what exactly do you want to do?
– Kuba♦
Dec 5 at 21:42
Woooops! Done! :)
– SLesslyTall
Dec 6 at 7:40
@SLesslyTall You see, you wantKeyValueMap[List] @ asso
but who could've known :)
– Kuba♦
Dec 6 at 7:53
add a comment |
1
Simply useMap
,KeyValueMap
orKeyMap
?
– Henrik Schumacher
Dec 5 at 19:20
Can you tell what exactly do you want to do?
– Kuba♦
Dec 5 at 21:42
Woooops! Done! :)
– SLesslyTall
Dec 6 at 7:40
@SLesslyTall You see, you wantKeyValueMap[List] @ asso
but who could've known :)
– Kuba♦
Dec 6 at 7:53
1
1
Simply use
Map
, KeyValueMap
or KeyMap
?– Henrik Schumacher
Dec 5 at 19:20
Simply use
Map
, KeyValueMap
or KeyMap
?– Henrik Schumacher
Dec 5 at 19:20
Can you tell what exactly do you want to do?
– Kuba♦
Dec 5 at 21:42
Can you tell what exactly do you want to do?
– Kuba♦
Dec 5 at 21:42
Woooops! Done! :)
– SLesslyTall
Dec 6 at 7:40
Woooops! Done! :)
– SLesslyTall
Dec 6 at 7:40
@SLesslyTall You see, you want
KeyValueMap[List] @ asso
but who could've known :)– Kuba♦
Dec 6 at 7:53
@SLesslyTall You see, you want
KeyValueMap[List] @ asso
but who could've known :)– Kuba♦
Dec 6 at 7:53
add a comment |
2 Answers
2
active
oldest
votes
up vote
2
down vote
accepted
To iterate over the keys of an association, first get the keys in a list using Keys
. then use this in your favorite iteration construct (Do
, Table
, Scan
, Map
, etc):
In[16]:= assoc = <|"0" -> 0, "1" -> 1, "2" -> 2|>;
In[17]:= Do[Print[x], {x, Keys[assoc]}]
During evaluation of In[17]:= 0
During evaluation of In[17]:= 1
During evaluation of In[17]:= 2
add a comment |
up vote
6
down vote
If you would like to map over the keys to transform them into something else, you can use KeyMap
:
a = <|"0" -> 0, "1" -> 1, "2" -> 2|>;
a // KeyMap[("newKey" <> #) &]
(* <|"newKey0" -> 0, "newKey1" -> 1, "newKey2" -> 2|> *)
Otherwise, the good old Map
will iterate over the values as if the structure were a list:
a // Map[("newVal" <> ToString@#) &]
(* <|"0" -> "newVal0", "1" -> "newVal1", "2" -> "newVal2"|> *)
You should also look up KeyValueMap
to see if that would make your task easier.
Edit
Henrik Schumacher's succinct comment contains everything I have elaborated here. His comment had not been posted when I began writing this answer.
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
accepted
To iterate over the keys of an association, first get the keys in a list using Keys
. then use this in your favorite iteration construct (Do
, Table
, Scan
, Map
, etc):
In[16]:= assoc = <|"0" -> 0, "1" -> 1, "2" -> 2|>;
In[17]:= Do[Print[x], {x, Keys[assoc]}]
During evaluation of In[17]:= 0
During evaluation of In[17]:= 1
During evaluation of In[17]:= 2
add a comment |
up vote
2
down vote
accepted
To iterate over the keys of an association, first get the keys in a list using Keys
. then use this in your favorite iteration construct (Do
, Table
, Scan
, Map
, etc):
In[16]:= assoc = <|"0" -> 0, "1" -> 1, "2" -> 2|>;
In[17]:= Do[Print[x], {x, Keys[assoc]}]
During evaluation of In[17]:= 0
During evaluation of In[17]:= 1
During evaluation of In[17]:= 2
add a comment |
up vote
2
down vote
accepted
up vote
2
down vote
accepted
To iterate over the keys of an association, first get the keys in a list using Keys
. then use this in your favorite iteration construct (Do
, Table
, Scan
, Map
, etc):
In[16]:= assoc = <|"0" -> 0, "1" -> 1, "2" -> 2|>;
In[17]:= Do[Print[x], {x, Keys[assoc]}]
During evaluation of In[17]:= 0
During evaluation of In[17]:= 1
During evaluation of In[17]:= 2
To iterate over the keys of an association, first get the keys in a list using Keys
. then use this in your favorite iteration construct (Do
, Table
, Scan
, Map
, etc):
In[16]:= assoc = <|"0" -> 0, "1" -> 1, "2" -> 2|>;
In[17]:= Do[Print[x], {x, Keys[assoc]}]
During evaluation of In[17]:= 0
During evaluation of In[17]:= 1
During evaluation of In[17]:= 2
answered Dec 5 at 19:41
Jason B.
47.5k387185
47.5k387185
add a comment |
add a comment |
up vote
6
down vote
If you would like to map over the keys to transform them into something else, you can use KeyMap
:
a = <|"0" -> 0, "1" -> 1, "2" -> 2|>;
a // KeyMap[("newKey" <> #) &]
(* <|"newKey0" -> 0, "newKey1" -> 1, "newKey2" -> 2|> *)
Otherwise, the good old Map
will iterate over the values as if the structure were a list:
a // Map[("newVal" <> ToString@#) &]
(* <|"0" -> "newVal0", "1" -> "newVal1", "2" -> "newVal2"|> *)
You should also look up KeyValueMap
to see if that would make your task easier.
Edit
Henrik Schumacher's succinct comment contains everything I have elaborated here. His comment had not been posted when I began writing this answer.
add a comment |
up vote
6
down vote
If you would like to map over the keys to transform them into something else, you can use KeyMap
:
a = <|"0" -> 0, "1" -> 1, "2" -> 2|>;
a // KeyMap[("newKey" <> #) &]
(* <|"newKey0" -> 0, "newKey1" -> 1, "newKey2" -> 2|> *)
Otherwise, the good old Map
will iterate over the values as if the structure were a list:
a // Map[("newVal" <> ToString@#) &]
(* <|"0" -> "newVal0", "1" -> "newVal1", "2" -> "newVal2"|> *)
You should also look up KeyValueMap
to see if that would make your task easier.
Edit
Henrik Schumacher's succinct comment contains everything I have elaborated here. His comment had not been posted when I began writing this answer.
add a comment |
up vote
6
down vote
up vote
6
down vote
If you would like to map over the keys to transform them into something else, you can use KeyMap
:
a = <|"0" -> 0, "1" -> 1, "2" -> 2|>;
a // KeyMap[("newKey" <> #) &]
(* <|"newKey0" -> 0, "newKey1" -> 1, "newKey2" -> 2|> *)
Otherwise, the good old Map
will iterate over the values as if the structure were a list:
a // Map[("newVal" <> ToString@#) &]
(* <|"0" -> "newVal0", "1" -> "newVal1", "2" -> "newVal2"|> *)
You should also look up KeyValueMap
to see if that would make your task easier.
Edit
Henrik Schumacher's succinct comment contains everything I have elaborated here. His comment had not been posted when I began writing this answer.
If you would like to map over the keys to transform them into something else, you can use KeyMap
:
a = <|"0" -> 0, "1" -> 1, "2" -> 2|>;
a // KeyMap[("newKey" <> #) &]
(* <|"newKey0" -> 0, "newKey1" -> 1, "newKey2" -> 2|> *)
Otherwise, the good old Map
will iterate over the values as if the structure were a list:
a // Map[("newVal" <> ToString@#) &]
(* <|"0" -> "newVal0", "1" -> "newVal1", "2" -> "newVal2"|> *)
You should also look up KeyValueMap
to see if that would make your task easier.
Edit
Henrik Schumacher's succinct comment contains everything I have elaborated here. His comment had not been posted when I began writing this answer.
answered Dec 5 at 19:25
Shredderroy
1,4481115
1,4481115
add a comment |
add a comment |
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f187393%2fiterate-over-keys-of-association%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Simply use
Map
,KeyValueMap
orKeyMap
?– Henrik Schumacher
Dec 5 at 19:20
Can you tell what exactly do you want to do?
– Kuba♦
Dec 5 at 21:42
Woooops! Done! :)
– SLesslyTall
Dec 6 at 7:40
@SLesslyTall You see, you want
KeyValueMap[List] @ asso
but who could've known :)– Kuba♦
Dec 6 at 7:53