Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
be019ce0
Commit
be019ce0
authored
Apr 11, 2014
by
Paul Sokolovsky
Browse files
objdict: Implement construction from iterable of pairs.
Pairs are limited to tuples so far.
parent
12a04392
Changes
2
Hide whitespace changes
Inline
Side-by-side
py/objdict.c
View file @
be019ce0
...
...
@@ -7,6 +7,7 @@
#include
"mpconfig.h"
#include
"qstr.h"
#include
"obj.h"
#include
"objtuple.h"
#include
"runtime0.h"
#include
"runtime.h"
...
...
@@ -39,13 +40,22 @@ STATIC mp_obj_t dict_make_new(mp_obj_t type_in, uint n_args, uint n_kw, const mp
dict
=
mp_obj_new_dict
(
0
);
break
;
case
1
:
case
1
:
{
if
(
MP_OBJ_IS_TYPE
(
args
[
0
],
&
mp_type_dict
))
{
return
dict_copy
(
args
[
0
]);
}
// TODO create dict from an arbitrary mapping!
// TODO create dict from an iterable!
assert
(
false
);
// Make dict from iterable of pairs
mp_obj_t
iterable
=
mp_getiter
(
args
[
0
]);
mp_obj_t
dict
=
mp_obj_new_dict
(
0
);
// TODO: support arbitrary seq as a pair
mp_obj_tuple_t
*
item
;
while
((
item
=
mp_iternext
(
iterable
))
!=
MP_OBJ_NULL
)
{
mp_obj_dict_store
(
dict
,
item
->
items
[
0
],
item
->
items
[
1
]);
}
return
dict
;
}
default:
nlr_raise
(
mp_obj_new_exception_msg_varg
(
&
mp_type_TypeError
,
"dict takes at most 1 argument"
));
...
...
tests/basics/dict-from-iter.py
0 → 100644
View file @
be019ce0
print
(
dict
([(
1
,
"foo"
)]))
d
=
dict
([(
"foo"
,
"foo2"
),
(
"bar"
,
"baz"
)])
print
(
sorted
(
d
.
keys
()))
print
(
sorted
(
d
.
values
()))
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment