-9

Suppose i have a string like 'value=sahi' and i want it like {1:s,2:a,3:h,4:i} is there any function to do like this.

  • 3
    `_, word = my_string.split('='); my_dict = {i: c for i, c in enumerate(word, 1)}`. – erip Jun 21 '16 at 11:32
  • 1
    It's really unfortunate this was closed as a duplicate as the duplicate question is asking about an array, while this is a dictionary - which is completely different. – enderland Dec 06 '20 at 13:54

3 Answers3

0

There isnt a specific function I know of but you can use dict comprehension:

s = "value=sahi"

d = {k+1: v for k, v in enumerate(s.split("=")[1])}

>>> {1: 's', 2: 'a', 3: 'h', 4: 'i'}
kezzos
  • 3,023
  • 3
  • 20
  • 37
0

You can do something like this:

value = "value=sahi"
value = value.replace("value=", "")

my_dict = {}
counter = 1

for c in value:
    my_dict[counter] = c
    counter += 1

for k, v in my_dict.iteritems():
    print k, v
Teemo
  • 449
  • 6
  • 23
-1

Step 1: split your given string on '='. This separates the part you don't care about and the part you do care about. In Python, we typically use _ to represent a "don't care".

_, word = given_string.split('=')

Step 2: Create a dictionary mapping the 1-indexed position to its respective 0-base-indexed character in the string. In Python, enumerate creates an iterable of tuples that does exactly this with 0-indexed positions. You can give an optional starting index. In this case, we want to start with one.

my_dict = {i: c for i, c in enumerate(word, 1)}

You can clearly do this in one line, but I think it's better to be explicit, especially when comprehensions are already magic. :)

erip
  • 16,374
  • 11
  • 66
  • 121