【发布时间】:2018-03-04 15:12:06
【问题描述】:
我有一个字符串列表要遍历,每行包含'is connected to' 或'likes to play' 作为标记,列表的每个项目中只有一个。所以我使用了一个for循环来迭代列表,里面是if语句来决定哪个短语在项目中。字符串列表是这样的:
lines = ['a is connected to b','a likes to play guitar, trampolines','b is connected to m,z', 'b likes to play piano','c is connected to s','c likes to play video games, ball games']
def create(string_input):
network = {}
lines = string_input.split('.')
for line in lines:
user = {}
if len(line)>0:
name = line[0:line.index(' ')]
if 'is connected to' in line:
friends = line[line.index('is connected to')+len('is connected to')+1:].split(",")
user['friends']= friends
elif 'likes to play' in line:
likes = line[line.index('likes to play')+ len('likes to play')+1:].split(",")
user['likes']= likes
network[name] = user
return network
print create(lines)
但是,打印的结果并没有给我user['friends'] 和user['likes']
最终结果仅包含第二个 if 块中的数据,并且所有 if 'is connected to' 数据都被替换为 [] 并丢失。我不确定数据结构或 if 语句是否处理不正确。任何人都可以帮我看看这里有什么问题吗?提前致谢。
编辑
正如 David 所指出的,代码中的问题在于更新字典而不是 for 和 if 语句。谢谢大家!!
【问题讨论】:
-
你实际上在哪里调用
create函数? -
嗨,Evan,它叫做:print create(lines)
-
上面粘贴的代码中没有任何地方。您应该添加所有相关的详细信息。
-
已更正,谢谢!
-
我不确定您是否正确使用了 split() 函数。这将采用一个字符串并将其拆分为一个数组,但是您传入的是行,这已经是一个数组。尝试删除
lines = string_input.split('.'),因为您已经有一个格式化的数组。
标签: python for-loop if-statement