簡體   English   中英

Python 從兩個列表生成字典

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM