Replacing a word in a list with a value from a dict

后端 未结 2 1857
抹茶落季
抹茶落季 2021-01-15 05:59

I\'m trying to create a simple program that lets you enter a sentence which will then be split into individual words, saved as splitline. For example:



        
相关标签:
2条回答
  • 2021-01-15 06:04

    Now that you have your dict the proper way, you can do regular dict object stuff like checking for keys and grabbing values:

    >>> text = 'the man lives in a house'
    >>> mydict = {"the":1,"in":2,"a":3}
    >>> splitlines = text.split()
    >>> for word in splitlines:
        if word in mydict:
            text = text.replace(word,str(mydict[word]))
    

    HOWEVER, note that with this:

    >>> text
    '1 m3n lives 2 3 house'
    

    since a is a key, the a in man will be replaced. You can instead use regex to ensure word boundaries:

    >>> text = 'the man lives in a house'
    >>> for word in splitlines:
        if word in mydict:
            text = re.sub(r'\b'+word+r'\b',str(mydict[word]),text)
    
    
    >>> text
    '1 man lives 2 3 house'
    

    the \b ensures that there is word boundary around each match.

    0 讨论(0)
  • 2021-01-15 06:20

    I'm not sure why you're iterating over every character, assigning splitline to be the same thing every time. Let's not do that.

    words = text.split()  # what's a splitline, anyway?
    

    It looks like your terminology is backwards, dictionaries look like: {key: value} not like {value: key}. In which case:

    my_dict = {'the': 1, 'in': 2, 'a': 3}
    

    is perfect to turn "the man lives in a house" into "1 man lives 2 3 house"

    From there you can use dict.get. I don't recommend str.replace.

    final_string = ' '.join(str(my_dict.get(word, word)) for word in words)
    # join with spaces all the words, using the dictionary substitution if possible
    

    dict.get allows you to specify a default value if the key isn't in the dictionary (rather than raising a KeyError like dict[key]). In this case you're saying "Give me the value at key word, and if it doesn't exist just give me word"

    0 讨论(0)
提交回复
热议问题