我有一个字符串,我要变成一个列表。然后我计算该列表中的单词,并尝试使用该数字(长度)作为计数器,以便我可以将每个单词添加到以数字作为关键字的字典中。它似乎枚举正确,但它只读取列表中的最后一个条目,而不是逐字逐句。
知道为什么它只读取列表中的最后一个条目,即“你?”?
mystring = "Hello mate how are you?"
mylist = mystring.split()
lengh = len(mylist)
class my_dictionary(dict):
# __init__ function
def __init__(self):
self = dict()
# Function to add key:value
def add(self, key, value):
self[key] = value
# Main Function
dict_obj = my_dictionary()
for x in range(lengh):
for line in mylist:
for word in line.split():
dict_obj.add(x, line)
print(dict_obj)
Run Code Online (Sandbox Code Playgroud)
输出是:
{0: 'you?', 1: 'you?', 2: 'you?', 3: 'you?', 4: 'you?'}
Run Code Online (Sandbox Code Playgroud)
输出应该是:
{0: 'Hello?', 1: 'mate?', 2: 'how', 3: 'are', 4: 'you?'}
Run Code Online (Sandbox Code Playgroud)
你让事情变得有点太复杂了。您正在为长度中的每个数字循环整个列表。您可以使用enumerate()来获取索引:
mystring = "Hello mate how are you?"
mylist = mystring.split()
class my_dictionary(dict):
def add(self, key, value):
self[key] = value
# Main Function
dict_obj = my_dictionary()
for x, word in enumerate(mylist):
dict_obj.add(x, word)
print(dict_obj)
# {0: 'Hello', 1: 'mate', 2: 'how', 3: 'are', 4: 'you?'}
Run Code Online (Sandbox Code Playgroud)
实际上,几乎不需要上述代码并且可以重构。这段代码做同样的事情:
mystring = "Hello mate how are you?"
words = mystring.split()
dict_obj = dict(enumerate(words))
print(dict_obj)
# {0: 'Hello', 1: 'mate', 2: 'how', 3: 'are', 4: 'you?'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39 次 |
| 最近记录: |