【发布时间】:2017-06-01 14:21:22
【问题描述】:
我一直在 Udacity 上课,我正在提交我的期末项目。
我必须通过解析一个字符串来创建一个数据结构:-
example_input="John 与 Bryant、Debra、Walter 有联系。\ John 喜欢 播放电影:游戏、柯基传奇、恐龙餐厅。\ 科比与奥利弗、奥利、弗雷达、梅赛德斯有联系。\科比喜欢 播放城市审计长:财政困境,超级蘑菇人。\ 梅赛德斯与沃尔特、罗宾、科比有联系。\梅赛德斯喜欢 玩柯基传奇、爪哇岛海盗、海马 Adventures.\ Olive 与 John、Ollie 有联系。\ Olive 喜欢玩 柯基传奇,星际舰队指挥官。\黛布拉连接到 Walter、Levi、Jennie、Robin。\ Debra 喜欢扮演七谋士, 爪哇岛的海盗,矮人和剑。\沃尔特连接到 John, Levi, Bryant.\ Walter 喜欢玩海马历险记、忍者 仓鼠,超级蘑菇人。\李维与奥利,约翰, Walter.\ Levi喜欢玩柯基传奇,七谋士,城市 Comptroller: The Fiscal Dilemma.\ Ollie 与 Mercedes 有联系, Freda, Bryant.\ Ollie 喜欢玩《武器召唤》、《矮人与剑》, The Movie: The Game.\ Jennie 与 Levi、John、Freda、 罗宾.\珍妮喜欢玩超级蘑菇人、恐龙餐厅、电话 武器。\罗宾连接到奥利。\罗宾喜欢玩Call of Arms、Dwarves 和 Swords。\ Freda 与 Olive、John、Debra 有联系。\ Freda喜欢玩星际舰队指挥官、忍者仓鼠、海马 冒险。”
我成功地做到了,我的输出数据结构如下:-
[['John', ['Bryant', 'Debra', 'Walter'], ['The Movie: The Game', 'The 柯基传奇','恐龙餐厅']],['科比',['橄榄','奥利', '弗雷达','梅赛德斯'],['城市审计员:财政困境','超级 蘑菇人]], ['梅赛德斯', ['沃尔特', '罗宾', '科比'], ['The 《柯基传奇》、《爪哇岛海盗》、《海马历险记》]]、 ['橄榄',['约翰','奥利'],['柯基传奇','星际舰队 指挥官']],['黛布拉',['沃尔特','李维','珍妮','罗宾'],['七 阴谋家,“爪哇岛的海盗”,“矮人与剑”]], ['Walter', ['John', 'Levi', 'Bryant'], ['Seahorse Adventures', 'Ninja 仓鼠','超级蘑菇人']],['Levi',['Ollie','John', '沃尔特'],['柯基传奇','七个计划者','城市 Comptroller: The Fiscal Dilemma']], ['Ollie', ['Mercedes', 'Freda', '布莱恩特'],['武器的召唤','矮人和剑','电影: Game']], ['Jennie', ['Levi', 'John', 'Freda', 'Robin'], ['Super 蘑菇人','恐龙餐厅','武器的召唤']],['罗宾', ['奥利'],['武器的召唤','矮人和剑']],['弗雷达', ['橄榄','约翰','黛布拉'],['星际舰队指挥官','忍者仓鼠', 《海马历险记》]]]
问题是我需要定义一个过程来查找我所做的连接的连接,但它运行不正常。嵌套循环只运行一次迭代。我不知道为什么。我尝试正常循环,也尝试使用范围函数。我也使用了while循环,但没有任何效果。这是我下面的代码:-
def get_secondary_connections(network, user):
found=False
for entry in network:
if entry[0]==user:
connections=entry[1]
found=True
connection_of_connections=[]
i=0
while i <len(connections):
for entry in network:
if connections[i] in entry[0]:
connection_of_connections=connection_of_connections+entry[1]
i=i+1
if found == True:
return connection_of_connections
else:
return None
print get_secondary_connections(net, 'John')
【问题讨论】:
-
你能美化你的输出数据结构吗?看到结构如何在没有换行符和缩进的情况下嵌套是很痛苦的。您可以将其粘贴到在线 json 格式化程序中。
-
另外,你的
i=i+1不知何故丢失了它的缩进。 -
为什么不使用字典而不是列表?
-
没有。在发布这个问题时,缩进已经出现了一些问题,并且一些代码没有被接受,所以我不得不做一些调整,导致我没有正确缩进。我必须向你保证,'i=i+1' 是在正确的位置。 @ashbygeek
-
Umm... 如果它在正确的位置,那么 get_secondary_connections 函数在
i=i+1之前的行结束,i=i+1语句在任何包含该语句的类或脚本中作为单个指令浮动函数,i=i+1之后的其余代码完全违反了 Python 的缩进规则。所以,请看 AS Mackay 的回答