【问题标题】:How can I transfer data from one string to another and end up getting the same result?如何将数据从一个字符串传输到另一个字符串并最终得到相同的结果?
【发布时间】:2021-12-31 23:26:09
【问题描述】:

所以我在 Stack Overflow 用户的帮助下编写了这段代码..

def get_name(string):
    return string.replace("+", "").replace("-", "")
def keepTabs(input_list: list):
    output = {}
    for entry in input_list:
        name = get_name(entry)
        if name not in output:
            output[name] = 0
        if "++" in entry:
            output[name] += 1
        if "--" in entry:
            output[name] -= 1
        if "->" in entry:
            output[name] == [name+1]
    return output
print(keepTabs(["Jim--", "John--", "Jordan--", "Jim++", "John--", "Jeff--", "June++", "June->Jim]))

在这段代码中,每个人“Jim”、“John”等都以 0 开头,他们获得或失去分数取决于他们从哪里得到“--”,从他们减去一个或“++”,这在他们现有的点上加一... 现在我想编辑它,以便如果列表中提供了“->”,例如,如果列表中有“John->Jim”,则 John 拥有的所有点都将添加到 Jim 的点中......

我已经尝试按照上面的代码来实现它,但它没有工作,我应该改变什么来确保它工作??

请尽可能使用最简单的代码版本,因为我对此很陌生:)

【问题讨论】:

标签: python list dictionary tuples


【解决方案1】:

我认为您不需要为此使用任何类型的字符串替换。怎么样:

def keepTabs(lst):
    output = dict()
    for item in lst:
        t = item.split('->')
        if len(t) == 2:
            if t[1] in output:
                output[t[1]] += output.get(t[0], 0)
        else:
            if item.endswith('--'):
                x = -1
            elif item.endswith('++'):
                x = 1
            else:
                continue
            if (name := item[:-2]) in output:
                output[name] += x
            else:
                output[name] = x
    return output

print(keepTabs(["Jim--", "John--", "Jordan--", "Jim++", "John--", "Jeff--", "June++", "June->Jim"]))

【讨论】:

    【解决方案2】:

    我的修改-

    def get_name(string):
        return string.replace("+", "").replace("-", "")
    def keepTabs(input_list: list):
        output = {}
        for entry in input_list:
            if '->' in entry:
                names = entry.split('->')
                output[names[1]] = output[names[0]]
                output[names[0]] = 0
            else:
                name = get_name(entry)
                if name not in output:
                    output[name] = 0
                if "++" in entry:
                    output[name] += 1
                if "--" in entry:
                    output[name] -= 1
        return output
    print(keepTabs(["Jim--", "John--", "Jordan--", "Jim++", "John--", "Jeff--", "June++", "June->Jim]))
    

    【讨论】:

      猜你喜欢
      • 2012-11-09
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 2015-10-10
      相关资源
      最近更新 更多