这只是我制作的一个快速片段,因为我的代码太复杂而无法进入,但我基本上想要的是:
我能够做到这一点,但我的问题是要引用它们的问题密钥或为其分配任何内容,除了密钥之外,我还必须在该列表中引用其索引。
他们需要在列表中,因为每个名称都有一个问题列表,每个问题都有一个答案列表,如下所示:image
这里的代码显示了我如何制作我的dict并附加到它,在实际的代码中这是在循环中完成的,但这是它的主旨: image2
有没有办法绕过必须按编号索引问题列表? (所以我可以做我上面所做的而不会出错)
更新
我开始意识到这是一种祝福,因为数字索引是检查问题及其答案的快速方法。如果我索引[0]它将显示单个问题及其所有答案。这是有帮助的,因为问题是句子,输入它们可能会很痛苦。
我仍然很好奇,如果我的问题得到答案,那么无论如何我都会发布。
文字代码:
>names = ["john","mark","jake"]
>namesDict = {x:[] for x in names}
>namesDict
{'mark': [], 'jake': [], 'john': []}
>namesDict["mark"].append({"question":[]})
>namesDict
{'mark': [{'question': []}], 'jake': [], 'john': []}
>namesDict["mark"]["question"].append("answer")
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: list indices must be integers, not str
>namesDict["mark"][0]["question"].append("answer")
>namesDict
{'mark': [{'question': ['answer']}], 'jake': [], 'john': []}
答案 0 :(得分:0)
我认为你在这里寻找的是跳过列表并嵌套一些词典。它看起来像这样:
names = ["john","mark","jake"]
namesDict = {x: {} for x in names}
namesDict['mark']['question1'] = []
namesDict['mark']['question1'].extend(('ans1_1', 'ans1_2', 'ans1_3'))
print(namesDict) # {'john': {}, 'mark': {'question1': ['ans1_1', 'ans1_2', 'ans1_3']}, 'jake': {}}
namesDict['mark']['question2'] = []
namesDict['mark']['question2'].extend(('ans2_1', 'ans2_2', 'ans2_3'))
print(namesDict) # {'john': {}, 'mark': {'question1': ['ans1_1', 'ans1_2', 'ans1_3'], 'question2': ['ans2_1', 'ans2_2', 'ans2_3']}, 'jake': {}}
唯一让你退缩的是namesDict['mark']
会有多个与question1
匹配的值。