Best way to split key:value pair into two pairs in a dictionary - python
up vote
1
down vote
favorite
So let's say i have a dictionary as:
d={'a-b':[1,2,3],'c-d':[4,5,6]}
And i want to split the keys, i.e 'a-b'
into two keys as 'a'
and 'b'
, and keep same value for both etc...
So desired output should be:
{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [4, 5, 6], 'd': [4, 5, 6]}
I know i can do (Thanks to @Netwave):
d={'a-b':[1,2,3],'c-d':[4,5,6]}
newd={}
for k,v in d.items():
x,y=k.split('-')
newd[x]=v
newd[y]=v
print(newd)
#{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [4, 5, 6], 'd': [4, 5, 6]}
But i don't think that's efficient,
So i am hoping one of you can give a better solution.
python python-3.x dictionary split key
add a comment |
up vote
1
down vote
favorite
So let's say i have a dictionary as:
d={'a-b':[1,2,3],'c-d':[4,5,6]}
And i want to split the keys, i.e 'a-b'
into two keys as 'a'
and 'b'
, and keep same value for both etc...
So desired output should be:
{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [4, 5, 6], 'd': [4, 5, 6]}
I know i can do (Thanks to @Netwave):
d={'a-b':[1,2,3],'c-d':[4,5,6]}
newd={}
for k,v in d.items():
x,y=k.split('-')
newd[x]=v
newd[y]=v
print(newd)
#{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [4, 5, 6], 'd': [4, 5, 6]}
But i don't think that's efficient,
So i am hoping one of you can give a better solution.
python python-3.x dictionary split key
1
Efficient according to... ? You are doing the bare minimum here so what are you hoping for?
– Julien
Nov 19 at 6:14
@Julien Am... i am hoping for a shorter, more efficient way of doing this, like maybe in a dictionary comprehension or something...
– U9-Forward
Nov 19 at 6:16
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
So let's say i have a dictionary as:
d={'a-b':[1,2,3],'c-d':[4,5,6]}
And i want to split the keys, i.e 'a-b'
into two keys as 'a'
and 'b'
, and keep same value for both etc...
So desired output should be:
{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [4, 5, 6], 'd': [4, 5, 6]}
I know i can do (Thanks to @Netwave):
d={'a-b':[1,2,3],'c-d':[4,5,6]}
newd={}
for k,v in d.items():
x,y=k.split('-')
newd[x]=v
newd[y]=v
print(newd)
#{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [4, 5, 6], 'd': [4, 5, 6]}
But i don't think that's efficient,
So i am hoping one of you can give a better solution.
python python-3.x dictionary split key
So let's say i have a dictionary as:
d={'a-b':[1,2,3],'c-d':[4,5,6]}
And i want to split the keys, i.e 'a-b'
into two keys as 'a'
and 'b'
, and keep same value for both etc...
So desired output should be:
{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [4, 5, 6], 'd': [4, 5, 6]}
I know i can do (Thanks to @Netwave):
d={'a-b':[1,2,3],'c-d':[4,5,6]}
newd={}
for k,v in d.items():
x,y=k.split('-')
newd[x]=v
newd[y]=v
print(newd)
#{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [4, 5, 6], 'd': [4, 5, 6]}
But i don't think that's efficient,
So i am hoping one of you can give a better solution.
python python-3.x dictionary split key
python python-3.x dictionary split key
edited Nov 19 at 6:02
asked Nov 19 at 5:59
U9-Forward
10.1k2834
10.1k2834
1
Efficient according to... ? You are doing the bare minimum here so what are you hoping for?
– Julien
Nov 19 at 6:14
@Julien Am... i am hoping for a shorter, more efficient way of doing this, like maybe in a dictionary comprehension or something...
– U9-Forward
Nov 19 at 6:16
add a comment |
1
Efficient according to... ? You are doing the bare minimum here so what are you hoping for?
– Julien
Nov 19 at 6:14
@Julien Am... i am hoping for a shorter, more efficient way of doing this, like maybe in a dictionary comprehension or something...
– U9-Forward
Nov 19 at 6:16
1
1
Efficient according to... ? You are doing the bare minimum here so what are you hoping for?
– Julien
Nov 19 at 6:14
Efficient according to... ? You are doing the bare minimum here so what are you hoping for?
– Julien
Nov 19 at 6:14
@Julien Am... i am hoping for a shorter, more efficient way of doing this, like maybe in a dictionary comprehension or something...
– U9-Forward
Nov 19 at 6:16
@Julien Am... i am hoping for a shorter, more efficient way of doing this, like maybe in a dictionary comprehension or something...
– U9-Forward
Nov 19 at 6:16
add a comment |
1 Answer
1
active
oldest
votes
up vote
4
down vote
accepted
Just use split
once:
for k,v in d.items():
x, y = k.split("-")
newd[x] = v
newd[y] = v
Or iterate through it:
for k,v in d.items():
for new_k in k.split("-")
newd[new_k] = v
As a dict comprehension:
{new_k : v for k,v in d.items() for new_k in k.split("-")}
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
4
down vote
accepted
Just use split
once:
for k,v in d.items():
x, y = k.split("-")
newd[x] = v
newd[y] = v
Or iterate through it:
for k,v in d.items():
for new_k in k.split("-")
newd[new_k] = v
As a dict comprehension:
{new_k : v for k,v in d.items() for new_k in k.split("-")}
add a comment |
up vote
4
down vote
accepted
Just use split
once:
for k,v in d.items():
x, y = k.split("-")
newd[x] = v
newd[y] = v
Or iterate through it:
for k,v in d.items():
for new_k in k.split("-")
newd[new_k] = v
As a dict comprehension:
{new_k : v for k,v in d.items() for new_k in k.split("-")}
add a comment |
up vote
4
down vote
accepted
up vote
4
down vote
accepted
Just use split
once:
for k,v in d.items():
x, y = k.split("-")
newd[x] = v
newd[y] = v
Or iterate through it:
for k,v in d.items():
for new_k in k.split("-")
newd[new_k] = v
As a dict comprehension:
{new_k : v for k,v in d.items() for new_k in k.split("-")}
Just use split
once:
for k,v in d.items():
x, y = k.split("-")
newd[x] = v
newd[y] = v
Or iterate through it:
for k,v in d.items():
for new_k in k.split("-")
newd[new_k] = v
As a dict comprehension:
{new_k : v for k,v in d.items() for new_k in k.split("-")}
edited Nov 19 at 6:01
answered Nov 19 at 6:00
Netwave
11.7k21942
11.7k21942
add a comment |
add a comment |
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%2fstackoverflow.com%2fquestions%2f53369070%2fbest-way-to-split-keyvalue-pair-into-two-pairs-in-a-dictionary-python%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
Efficient according to... ? You are doing the bare minimum here so what are you hoping for?
– Julien
Nov 19 at 6:14
@Julien Am... i am hoping for a shorter, more efficient way of doing this, like maybe in a dictionary comprehension or something...
– U9-Forward
Nov 19 at 6:16