[英]Python generating a dictionary from two lists
我正在嘗試制作一個進行“測試”的程序。 從 make_test(['jim', 'Jen'], 4) 開始,這應該生成一個字典,其中每個學生姓名(在本例中為兩個)是關鍵,每個學生得到 n(在本例中為 4)個不同的“測試”作為列表的列表(換句話說:包含 4 個列表的列表,每個列表有四個整數)。 我在下面的代碼末尾展示了預期的結果。 帶有測試的列表是從 function make_eq 生成的,它再次檢查是否滿足 function 檢查中的三個標准。 下面的代碼似乎一直有效到最后一個 function make_test。 這可能有多個錯誤。 其中一個錯誤是 NameError: name 'res' is not defined - 有什么想法嗎?
res = []
def check(ls):
for n in ls:
if n==0 or ls[0] == ls[2] or ls[1] == ls[3]:
return False
return True
def make_eq(ls):
while len(res) < n:
tmp = [randint(1,9),randint(1,9),randint(1,9),randint(1,9)]
if check(tmp):
res.append(tmp)
return res
def make_test(students, n):
students = []
tests = {}
for student in students:
for test in res:
tests[student] = test
res.remove(test)
print(tests)
make_test(['jim', 'Jen'], 4)
#Expected Output:
#{'Jim': [[1, -3, -2, 1], [3, 4, 5, 6], [1, 2, 3, 4], [-5, 6, -8, -1]],
#'Jen': [[3, 2, -9, 8], [1, -2, 9, 3], [5, -1, -2, 3], [9, -2, -3, -4]]}
Res 在 function make_eq 下本地定義。 如果您想要 res 的值,則必須使用預期參數從 make_eq function 返回它,並將其存儲在 make_test 內的其他 res 變量中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.