我有一个文件想要循环执行。我的文件如下所示:

Hello Hello
A B C D
A B C D
B C D A
B C D A
C D A B
B C D A

Hello Bye
A C D B
C D A B
A C D B
D C A B


我只通过再见运行到空白行的循环。

它应该返回:

 {(A, C, D, B): 2, (C, D, A, b):1, (D, C, A, B):1}


有没有一种方法我可以称之为“全部”,它将添加所有排列?

我想这样做而不使用任何导入。

到目前为止,我的函数如下所示:

# input_word = Hello or Bye
def file_to_dict (file, input_word):
    new_dict = {}
    new_list = []

    flag = False
    for line in f:
        if 'Hello' in line:
            continue
        if not line.strip():
            continue
        lElts = tuple(line.split(' '))
        if lElts in dRet:
            dRet[lElts] += 1
        else:
            dRet[lElts] = 1
    return dRet


是否有继续的替代方法?

现在,这给了我一个错误:

ValueError: I/O operation on closed file

最佳答案

大量的逻辑错误...建议您检查elif的工作方式

def f_to_dict(f):
    dRet = {}
    for line in f:
        if 'Hello' in line:
            continue
        if not line.strip():
            continue
        lElts = tuple(line.split(' '))
        if lElts in dRet:
            dRet[lElts] += 1
        else:
            dRet[lElts] = 1
    return dRet

09-29 22:30