【问题标题】:Python process file and return specific itemsPython 处理文件并返回特定项
【发布时间】:2010-11-25 23:52:51
【问题描述】:

假设我有一个字典,字典是一个以字典为值的字典

dict = {'**Leon**':{'Name':'Leon L','**follow**':['Apple', 'PPy','Jack','Tommy']},'**Jack**':{'name':'Jack Y','**follow**':['Apple','Cruise','Jay']},'**Tommy**':{'name':'Tommy T','**follow**':['Hill']},'**Apple**':{'name':'Apple A','**follow**':['Jack']},**'Cruise'**:{'name':'Cruise L','**follow**':['Jay']}}

**follow** 表示该用户关注的用户,例如: Leon 关注 Apple、PPy、Jack、Tommy

我有查询文件,其中包含任务。我们需要完成任务并返回一个用户名列表(用户名是dict中的键,例如'Leon','Jack','Tommy'),该文件的格式是:

SEARCH
Leon
follow
follow-by # there might be many more follow, and follow-by
FILTER
name-include Leon
follow Apple # format: keyword follow, a space and a username. same apply to follow-by username
follow-by Leon # there might be more name-include, , follow username, follow by username

查询文件的含义: SEARCH 和 FILTER 是关键字。 SEARCH 之后的行是起始用户名(我们需要将其放入列表中,我们将列表命名为 user_list)。搜索规范有两个步骤(在这种情况下):

  1. 创建一个包含 Leon 的列表,将此列表称为 L1
  2. follow 表示将 L1 中的每个人 p 替换为关注 p 的人,然后我们得到 L2
  3. follow-by 表示将 L2 中的每个人 p 替换为 p 关注的人(p 关注的人在用户配置文件的关注列表中)。然后我们得到 L3

过滤器规范(在本例中):

  1. 对于 L3 中的每个人 p,如果 p 的名字中包含“Leon”,则该用户保留在列表中。然后我们得到 L4
  2. 对于 L4 中的每个人 p,如果 p 跟随 Apple,则 p 保留在列表中,我们得到 L5
  3. 对于 L5 中的每个人 p,如果 p 后面跟着 Leon,则 p 保留在列表中。然后我们得到我们的最终名单。我们需要返回最终列表

谁能帮我写一个可以完成任务的程序?

【问题讨论】:

  • 如果您向我们展示您到目前为止所拥有的东西或告诉我们您遇到的问题,那就太好了。我们不是来为您工作的。

标签: python file twitter python-twitter


【解决方案1】:

我建议使用状态机,或者更具体地说是pushdown automata。您将使用数据字典初始化机器,然后对于输入文件中的每一行,您将转换到一个新状态并执行指定的工作,并将结果存储在堆栈中。每一步都可以访问上一步返回的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 2014-03-17
    • 2021-10-04
    • 2014-04-23
    相关资源
    最近更新 更多