用于提取字典值的循环过早结束

2024-09-30 06:20:00 发布

您现在位置:Python中文网/ 问答频道 /正文

你知道吗 我想用这本字典:

student_data_dict = {'Student_1': 'bbbeaddacddcddaaadbaabdad', 'Student_2': 'acbccaddcadaaacdadbcabcad', 'Student_3': 'babcabdccadcDdbccdbaadbad', 'Student_4': 'bcbcabddcadcdabccdbaadcbd', 'Student_5': 'DCBCCADDCADBDACCDBBACBCAD', 'Student_6': 'acbeccddcadbaaccabbacdcad', 'Student_7': 'BCBCBCDABADCADCCDABAACCAD', 'Student_8': 'dcbccbddcadaabcbcacabbcad', 'Student_9': 'DDBDBBCDDCCBABCCBACADAAAC', 'Student_10': 'cbbdacdacadcbadbabaabcaTa', 'Student_11': 'BDBECADCAADCAAAAACBACACAD', 'Student_12': 'DBBCCBDCCADCDABABCBAABCAD', 'Student_13': 'BCBCBCDDCADCAAACCABACACAD', 'Student_14': 'DBBECBDACADAAACBCBAAABCBD', 'Student_15': 'acbebbddcadbaacccbcaddcad', 'Student_16': 'ACBEBCDDCADBAACCAACADBCAD', 'Student_17': 'DBBCACDDCADCAABCADBABDDAD', 'Student_18': 'dcbcdcdbbddccabbdacacccbd', 'Student_19': 'dbbccbddcadaaaccbdcaaacad', 'Student_20': 'abbdaaddcadcaaccbdcaaccbd', 'Student_21': 'DCDCABDBCADAAACDCCDAACAAD', 'Student_22': 'dabdaddabddbaacdacbaaaaad', 'Student_23': 'BCBCDDDACCDCAABDDABACACAD', 'Student_24': 'ACBDCBDBBCDAACCCCBDAADCBD', 'Student_25': 'DCBCACDAADDCADCBAABACBCAD', 'Student_26': 'dcbaabdccadcdadcccbaabdbd', 'Student_27': 'abbadbddcadacbcacccacbdad'}

并将所有学生的第一个字母作为词典条目存储,然后对下一个字母等执行相同的操作。。。导致:

{'question_1': 'babbDaBdDcBDBDaADddaDdBADda', 'question_2': 'bcacCcCcDbDBCBcCBcbbCaCCCcb', 'question_3': 'bbbbBbBbBbBBBBbBBbbbDbBBBbb', 'question_4': 'ecccCeCcDdECCEeECccdCdCDCaa', 'question_5': 'acaaCcBcBaCCBCbBAdcaAaDCAad', 'question_6': 'dabbAcCbBcABCBbCCcbaBdDBCbb', 'question_7': 'ddddDdDdCdDDDDdDDdddDdDDDdd', 'question_8': 'adcdDdAdDaCCDAdDDbddBaABAcd', 'question_9': 'ccccCcBcDcACCCcCCbccCbCBAcc', 'question_10': 'daaaAaAaCaAAAAaAAdaaAdCCDaa', 'question_11': 'ddddDdDdCdDDDDdDDdddDdDDDdd', 'question_12': 'caccBbCaBcCCCAbBCcacAbCACca', 'question_13': 'daDdDaAaAbADAAaAAcaaAaAAAdc', 'question_14': 'dadaAaDbBaAAAAaAAaaaAaACDab', 'question_15': 'acbbCcCcCdABACcCBbccCcBCCdc', 'question_16': 'adccCcCbCbAACBcCCbccDdDCBca', 'question_17': 'aaccDaDcBaABCCcAAdbbCaDCAcc', 'question_18': 'ddddBbAaAbCCABbADaddCcABAcc', 'question_19': 'bbbbBbBcCaBBBAcCBcccDbBDBbc', 'question_20': 'acaaAaAaAaAAAAaAAaaaAaAAAaa', 'question_21': 'aaaaCcAbDbCACAdDBcaaAaCACac', 'question_22': 'bbddBdCbAcABABdBDcacCaADBbb', 'question_23': 'dcbcCcCcAaCCCCcCDcccAaCCCdd', 'question_24': 'aaabAaAaATAAABaAAbabAaABAba', 'question_25': 'ddddDdDdCaDDDDdDDdddDdDDDdd'}
x = 1
all_letters = ''
letter = ''
y = 1
i = 0
z = 0
for start in student_data_dict:
        student = student_data_dict.get('Student_' + str(y))
        letter = student[z]
        all_letters = all_letters + letter
        y = y + 1
        i = i + 1
        question_data_dict["question " + str(x)] = all_letters
        if i == 27:
            z = z + 1
            x = x + 1
            i = 0
print(question_data_dict)
data_file.close()

你知道吗 {'question 1': 'babbDaBdDcBDBDaADddaDdBADda'}

是我得到的,但我不能得到其他25个问题的答案。你知道吗

我试着把for start in student_data_dict:改成while z<26:,但是在“letter=student[z]”一行,我得到了一个错误“'NoneType'object is not subscriptable”


Tags: infordata字母allstartstudentdict
3条回答
num_questions = 25
answers_dict = {}
for i in range(num_questions):
    answers_dict['question' + str(i)] = ''.join(c[i] for c in student_data_dict.values())

print(answers_dict)

会给你想要的结果。你知道吗

编辑

固定代码。将问题数提取到一个变量中,以便将其用作索引

编辑2

我从原始字典中创建了一个OrderedDict,以在迭代时保持答案顺序。现在answers_dict包含有效数据。你知道吗

from collections import OrderedDict

ordered_data = OrderedDict()
for i in range(len(student_data_dict.items())):
    ordered_data['Student_' + str(i + 1)] = student_data_dict.get('Student_' + str(i + 1))

num_questions = 25
answers_dict = {}
for i in range(num_questions):
    answers_dict['question' + str(i + 1)] = ''.join(c[i] for c in ordered_data.values())

这里有一个替代方法,可以让你在熊猫身上找到你想要的东西:

import pandas as pd

sdd = {k:[x for x in v] for k,v in student_data_dict}

df = pd.DataFrame(sdd)
df = df.reindex_axis(sorted(df.columns, 
                            key = lambda col: int(col.split("_")[-1])), axis=1)
df.index = [f"Question {i+1}" for i in df.index]

{k:''.join(v) for k,v in zip(df.index, df.values)}

转到下一个问题时,需要重置y。你知道吗

相关问题 更多 >

    热门问题