python 3 adding multiple values under same key in dictionary [duplicate]












1
















This question already has an answer here:




  • append multiple values for one key in a dictionary [duplicate]

    7 answers




i have a problem with my code, tried looking up how to fix it and tried multiple methods but its just not going



Here is what i got:



with open("people-data.txt") as f:

children= {}
for line in f.readlines():
parent, child = line.split("->")
children[parent] = child


I tried using: children[parent].append(child) and other things.



My file looks like this:



Mary->Patricia
Mary->Lisa
Patricia->Barbara


What I would like is when I use children[Mary] I get ['Patricia', 'Lisa'] but what my code does is give my just 'Lisa' and overrides 'Patricia'.










share|improve this question















marked as duplicate by DeepSpace python
Users with the  python badge can single-handedly close python questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 25 '18 at 16:25


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.



















  • It should be children[parent] = child. In your case you would store the key "parent" and overwrite it.

    – Anton vBR
    Nov 25 '18 at 16:22













  • ye sorry, my mistake from copying, let my correct it

    – D. K.
    Nov 25 '18 at 16:23











  • You need to use a defaultdict from collections.

    – Anton vBR
    Nov 25 '18 at 16:24













  • Of course it overwrites. What else would children[parent] = child do? You need to keep lists in each value of the dict, which can be easily done by using children = defaultdict(list) and children[parent].append(child)

    – DeepSpace
    Nov 25 '18 at 16:24


















1
















This question already has an answer here:




  • append multiple values for one key in a dictionary [duplicate]

    7 answers




i have a problem with my code, tried looking up how to fix it and tried multiple methods but its just not going



Here is what i got:



with open("people-data.txt") as f:

children= {}
for line in f.readlines():
parent, child = line.split("->")
children[parent] = child


I tried using: children[parent].append(child) and other things.



My file looks like this:



Mary->Patricia
Mary->Lisa
Patricia->Barbara


What I would like is when I use children[Mary] I get ['Patricia', 'Lisa'] but what my code does is give my just 'Lisa' and overrides 'Patricia'.










share|improve this question















marked as duplicate by DeepSpace python
Users with the  python badge can single-handedly close python questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 25 '18 at 16:25


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.



















  • It should be children[parent] = child. In your case you would store the key "parent" and overwrite it.

    – Anton vBR
    Nov 25 '18 at 16:22













  • ye sorry, my mistake from copying, let my correct it

    – D. K.
    Nov 25 '18 at 16:23











  • You need to use a defaultdict from collections.

    – Anton vBR
    Nov 25 '18 at 16:24













  • Of course it overwrites. What else would children[parent] = child do? You need to keep lists in each value of the dict, which can be easily done by using children = defaultdict(list) and children[parent].append(child)

    – DeepSpace
    Nov 25 '18 at 16:24
















1












1








1









This question already has an answer here:




  • append multiple values for one key in a dictionary [duplicate]

    7 answers




i have a problem with my code, tried looking up how to fix it and tried multiple methods but its just not going



Here is what i got:



with open("people-data.txt") as f:

children= {}
for line in f.readlines():
parent, child = line.split("->")
children[parent] = child


I tried using: children[parent].append(child) and other things.



My file looks like this:



Mary->Patricia
Mary->Lisa
Patricia->Barbara


What I would like is when I use children[Mary] I get ['Patricia', 'Lisa'] but what my code does is give my just 'Lisa' and overrides 'Patricia'.










share|improve this question

















This question already has an answer here:




  • append multiple values for one key in a dictionary [duplicate]

    7 answers




i have a problem with my code, tried looking up how to fix it and tried multiple methods but its just not going



Here is what i got:



with open("people-data.txt") as f:

children= {}
for line in f.readlines():
parent, child = line.split("->")
children[parent] = child


I tried using: children[parent].append(child) and other things.



My file looks like this:



Mary->Patricia
Mary->Lisa
Patricia->Barbara


What I would like is when I use children[Mary] I get ['Patricia', 'Lisa'] but what my code does is give my just 'Lisa' and overrides 'Patricia'.





This question already has an answer here:




  • append multiple values for one key in a dictionary [duplicate]

    7 answers








python python-3.x dictionary






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 25 '18 at 16:31









timgeb

50.7k116393




50.7k116393










asked Nov 25 '18 at 16:21









D. K.D. K.

455




455




marked as duplicate by DeepSpace python
Users with the  python badge can single-handedly close python questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 25 '18 at 16:25


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.









marked as duplicate by DeepSpace python
Users with the  python badge can single-handedly close python questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 25 '18 at 16:25


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.















  • It should be children[parent] = child. In your case you would store the key "parent" and overwrite it.

    – Anton vBR
    Nov 25 '18 at 16:22













  • ye sorry, my mistake from copying, let my correct it

    – D. K.
    Nov 25 '18 at 16:23











  • You need to use a defaultdict from collections.

    – Anton vBR
    Nov 25 '18 at 16:24













  • Of course it overwrites. What else would children[parent] = child do? You need to keep lists in each value of the dict, which can be easily done by using children = defaultdict(list) and children[parent].append(child)

    – DeepSpace
    Nov 25 '18 at 16:24





















  • It should be children[parent] = child. In your case you would store the key "parent" and overwrite it.

    – Anton vBR
    Nov 25 '18 at 16:22













  • ye sorry, my mistake from copying, let my correct it

    – D. K.
    Nov 25 '18 at 16:23











  • You need to use a defaultdict from collections.

    – Anton vBR
    Nov 25 '18 at 16:24













  • Of course it overwrites. What else would children[parent] = child do? You need to keep lists in each value of the dict, which can be easily done by using children = defaultdict(list) and children[parent].append(child)

    – DeepSpace
    Nov 25 '18 at 16:24



















It should be children[parent] = child. In your case you would store the key "parent" and overwrite it.

– Anton vBR
Nov 25 '18 at 16:22







It should be children[parent] = child. In your case you would store the key "parent" and overwrite it.

– Anton vBR
Nov 25 '18 at 16:22















ye sorry, my mistake from copying, let my correct it

– D. K.
Nov 25 '18 at 16:23





ye sorry, my mistake from copying, let my correct it

– D. K.
Nov 25 '18 at 16:23













You need to use a defaultdict from collections.

– Anton vBR
Nov 25 '18 at 16:24







You need to use a defaultdict from collections.

– Anton vBR
Nov 25 '18 at 16:24















Of course it overwrites. What else would children[parent] = child do? You need to keep lists in each value of the dict, which can be easily done by using children = defaultdict(list) and children[parent].append(child)

– DeepSpace
Nov 25 '18 at 16:24







Of course it overwrites. What else would children[parent] = child do? You need to keep lists in each value of the dict, which can be easily done by using children = defaultdict(list) and children[parent].append(child)

– DeepSpace
Nov 25 '18 at 16:24














1 Answer
1






active

oldest

votes


















2















I tried using: children[parent].append(child)




That will work as long as you are using lists for your dictionary-values.



The easiest fix to achieve that would be to make children a defaultdict, i.e.



from collections import defaultdict
children = defaultdict(list)


and then use



children[parent].append(child)


in your code.



Demo:



>>> from collections import defaultdict
>>> children = defaultdict(list)
>>>
>>> children['Peter'].append('Bob')
>>> children['Peter'].append('Alice')
>>> children['Mary'].append('Joe')
>>>
>>> children
defaultdict(list, {'Mary': ['Joe'], 'Peter': ['Bob', 'Alice']})





share|improve this answer


























  • Yes, and don't forget: children[parent].append(child) for a complete solution.

    – Anton vBR
    Nov 25 '18 at 16:25













  • Thank you, it is now creating what i wanted, but the problem is that when i call children("Mary") i get that it is not callable, i need the values to work with later on

    – D. K.
    Nov 25 '18 at 16:27






  • 1





    @DávidKačmar children['Mary'].

    – timgeb
    Nov 25 '18 at 16:28






  • 1





    Thank you!!!! i love you guys!! or girls :D saved my day :D thanks alot

    – D. K.
    Nov 25 '18 at 16:29


















1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









2















I tried using: children[parent].append(child)




That will work as long as you are using lists for your dictionary-values.



The easiest fix to achieve that would be to make children a defaultdict, i.e.



from collections import defaultdict
children = defaultdict(list)


and then use



children[parent].append(child)


in your code.



Demo:



>>> from collections import defaultdict
>>> children = defaultdict(list)
>>>
>>> children['Peter'].append('Bob')
>>> children['Peter'].append('Alice')
>>> children['Mary'].append('Joe')
>>>
>>> children
defaultdict(list, {'Mary': ['Joe'], 'Peter': ['Bob', 'Alice']})





share|improve this answer


























  • Yes, and don't forget: children[parent].append(child) for a complete solution.

    – Anton vBR
    Nov 25 '18 at 16:25













  • Thank you, it is now creating what i wanted, but the problem is that when i call children("Mary") i get that it is not callable, i need the values to work with later on

    – D. K.
    Nov 25 '18 at 16:27






  • 1





    @DávidKačmar children['Mary'].

    – timgeb
    Nov 25 '18 at 16:28






  • 1





    Thank you!!!! i love you guys!! or girls :D saved my day :D thanks alot

    – D. K.
    Nov 25 '18 at 16:29
















2















I tried using: children[parent].append(child)




That will work as long as you are using lists for your dictionary-values.



The easiest fix to achieve that would be to make children a defaultdict, i.e.



from collections import defaultdict
children = defaultdict(list)


and then use



children[parent].append(child)


in your code.



Demo:



>>> from collections import defaultdict
>>> children = defaultdict(list)
>>>
>>> children['Peter'].append('Bob')
>>> children['Peter'].append('Alice')
>>> children['Mary'].append('Joe')
>>>
>>> children
defaultdict(list, {'Mary': ['Joe'], 'Peter': ['Bob', 'Alice']})





share|improve this answer


























  • Yes, and don't forget: children[parent].append(child) for a complete solution.

    – Anton vBR
    Nov 25 '18 at 16:25













  • Thank you, it is now creating what i wanted, but the problem is that when i call children("Mary") i get that it is not callable, i need the values to work with later on

    – D. K.
    Nov 25 '18 at 16:27






  • 1





    @DávidKačmar children['Mary'].

    – timgeb
    Nov 25 '18 at 16:28






  • 1





    Thank you!!!! i love you guys!! or girls :D saved my day :D thanks alot

    – D. K.
    Nov 25 '18 at 16:29














2












2








2








I tried using: children[parent].append(child)




That will work as long as you are using lists for your dictionary-values.



The easiest fix to achieve that would be to make children a defaultdict, i.e.



from collections import defaultdict
children = defaultdict(list)


and then use



children[parent].append(child)


in your code.



Demo:



>>> from collections import defaultdict
>>> children = defaultdict(list)
>>>
>>> children['Peter'].append('Bob')
>>> children['Peter'].append('Alice')
>>> children['Mary'].append('Joe')
>>>
>>> children
defaultdict(list, {'Mary': ['Joe'], 'Peter': ['Bob', 'Alice']})





share|improve this answer
















I tried using: children[parent].append(child)




That will work as long as you are using lists for your dictionary-values.



The easiest fix to achieve that would be to make children a defaultdict, i.e.



from collections import defaultdict
children = defaultdict(list)


and then use



children[parent].append(child)


in your code.



Demo:



>>> from collections import defaultdict
>>> children = defaultdict(list)
>>>
>>> children['Peter'].append('Bob')
>>> children['Peter'].append('Alice')
>>> children['Mary'].append('Joe')
>>>
>>> children
defaultdict(list, {'Mary': ['Joe'], 'Peter': ['Bob', 'Alice']})






share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 25 '18 at 16:32

























answered Nov 25 '18 at 16:23









timgebtimgeb

50.7k116393




50.7k116393













  • Yes, and don't forget: children[parent].append(child) for a complete solution.

    – Anton vBR
    Nov 25 '18 at 16:25













  • Thank you, it is now creating what i wanted, but the problem is that when i call children("Mary") i get that it is not callable, i need the values to work with later on

    – D. K.
    Nov 25 '18 at 16:27






  • 1





    @DávidKačmar children['Mary'].

    – timgeb
    Nov 25 '18 at 16:28






  • 1





    Thank you!!!! i love you guys!! or girls :D saved my day :D thanks alot

    – D. K.
    Nov 25 '18 at 16:29



















  • Yes, and don't forget: children[parent].append(child) for a complete solution.

    – Anton vBR
    Nov 25 '18 at 16:25













  • Thank you, it is now creating what i wanted, but the problem is that when i call children("Mary") i get that it is not callable, i need the values to work with later on

    – D. K.
    Nov 25 '18 at 16:27






  • 1





    @DávidKačmar children['Mary'].

    – timgeb
    Nov 25 '18 at 16:28






  • 1





    Thank you!!!! i love you guys!! or girls :D saved my day :D thanks alot

    – D. K.
    Nov 25 '18 at 16:29

















Yes, and don't forget: children[parent].append(child) for a complete solution.

– Anton vBR
Nov 25 '18 at 16:25







Yes, and don't forget: children[parent].append(child) for a complete solution.

– Anton vBR
Nov 25 '18 at 16:25















Thank you, it is now creating what i wanted, but the problem is that when i call children("Mary") i get that it is not callable, i need the values to work with later on

– D. K.
Nov 25 '18 at 16:27





Thank you, it is now creating what i wanted, but the problem is that when i call children("Mary") i get that it is not callable, i need the values to work with later on

– D. K.
Nov 25 '18 at 16:27




1




1





@DávidKačmar children['Mary'].

– timgeb
Nov 25 '18 at 16:28





@DávidKačmar children['Mary'].

– timgeb
Nov 25 '18 at 16:28




1




1





Thank you!!!! i love you guys!! or girls :D saved my day :D thanks alot

– D. K.
Nov 25 '18 at 16:29





Thank you!!!! i love you guys!! or girls :D saved my day :D thanks alot

– D. K.
Nov 25 '18 at 16:29



Popular posts from this blog

A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks

Calculate evaluation metrics using cross_val_predict sklearn

Insert data from modal to MySQL (multiple modal on website)