Python Forum
dict value, how to change type from int to list?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
dict value, how to change type from int to list?
#1
Question 
I have a dictionary, and one of the keys currently has 1 as value, so the value side is an int. I'm trying to make the value side a list so it can have [1, 2].

I currently have: {'key1': 1}
I'm trying to get: {'key1': [1, 2]}

test = dict()
test['key1'] = 1

# i tried without success:
# this will do an addition
test['key1'] += 2
# this will replace the current value
test.update({'key1': 2})
thank you!
Reply
#2
If it's just this one case, just replace it.

test['key1'] = [test['key1'], 2]
The problem is if you need to do this and might want to keep extending the list. Best in that case is to never insert the int in the first place. Always have a list as the value (perhaps via defaultdict). Then you can just append whenever necessary.

import defaultdict
test = defaultdict(list)

#first element
test['key1'].append(1)
# second element
test['key1'].append(2)
buran likes this post
Reply
#3
test = {'key':[1] }  # Initialize with a list value
test['key'] += [2]  # Then you can add to the list like this
test['key'].append(3)  # or this
test['key'].extend((4, 5, 6))  # or this
print(test['key'])
Output:
[1, 2, 3, 4, 5, 6]
Reply
#4
One way is to use setdefault.

>>> test = dict()
>>> test.setdefault('key1', list()).append(2)
>>> test
{'key1': [2]}
It could be used in for-loops etc:

>>> test = dict()
>>> nums = [2, 3, 7, 19, 24]
>>> for num in nums:
...     if num % 2:
...         test.setdefault(num, list()).append(num**2)
...
>>> test
{3: [9], 7: [49], 19: [361]}
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How to change the datatype of list elements? mHosseinDS86 9 465 Aug-24-2022, 05:26 PM
Last Post: deanhystad
  search a list or tuple for a specific type ot class Skaperen 8 557 Jul-22-2022, 10:29 PM
Last Post: Skaperen
  TypeError: unsupported operand type(s) for +: 'dict' and 'int' nick12341234 1 425 Jul-15-2022, 04:04 AM
Last Post: ndc85430
  Membership test for an element in a list that is a dict value for a particular key? Mark17 2 367 Jul-01-2022, 10:52 PM
Last Post: Pedroski55
  find some word in text list file and a bit change to them RolanRoll 3 421 Jun-27-2022, 01:36 AM
Last Post: RolanRoll
  Are list/dict comprehensions interpreted really sequentially? anata2047 3 501 May-31-2022, 08:43 PM
Last Post: Gribouillis
  TypeError: unsupported opperand type(s) for %: 'int' and 'list' cool_person 7 696 May-07-2022, 08:40 AM
Last Post: ibreeden
  unsupported operand type(s) for %: 'list' and 'int' RandomCoder 4 28,277 May-07-2022, 08:07 AM
Last Post: menator01
  Updating nested dict list keys tbaror 2 612 Feb-09-2022, 09:37 AM
Last Post: tbaror
  Change font in a list or tuple apffal 3 1,292 Oct-14-2021, 05:26 AM
Last Post: ndc85430

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020