<p>似乎您想有条件地更新一个dict列表。你知道吗</p>
<p><strong>给定的</strong></p>
<pre><code>import random
students = [
{"Student1": "029182", "e-mail": "ex@mail.com"},
{"Student2": "0591238", "e-mail": "ex@mail.com"},
{"Student3": "9213189", "e-mail": "ex@mail.com"},
]
</code></pre>
<p><strong>代码</strong></p>
<pre><code>def get_unique_numbers(size=10):
"""Return an a list of unique random values."""
return random.sample(range(10000, 99999), size)
def update(students):
"""Return a list of updated dicts."""
n = len(students)
# Conditionally, generate student numbers
if n <= 20:
student_numbers = [students[0]["Student1"]] * n
elif 20 < n <= 60:
student_numbers = get_unique_numbers(n)
# Update dicts w/student numbers
return [{**d, "student_num": n} for d, n in zip(students, student_numbers)]
</code></pre>
<p>演示</p>
<p>一小部分学生(<code>n <= 20</code>)返回具有相同学生编号的dict:</p>
<pre><code>update(students)
# [{'Student1': '029182', 'e-mail': 'ex@mail.com', 'student_num': '029182'},
# {'Student2': '0591238', 'e-mail': 'ex@mail.com', 'student_num': '029182'},
# {'Student3': '9213189', 'e-mail': 'ex@mail.com', 'student_num': '029182'}]
</code></pre>
<p>较大的列表(<code>n > 20</code>)返回带有随机学生编号的dict*:</p>
<pre><code>update(students * 7)
# {'Student1': '029182', 'e-mail': 'ex@mail.com', 'student_num': 28308},
# {'Student2': '0591238', 'e-mail': 'ex@mail.com', 'student_num': 21986},
# {'Student3': '9213189', 'e-mail': 'ex@mail.com', 'student_num': 36603},
# ...
# {'Student1': '029182', 'e-mail': 'ex@mail.com', 'student_num': 38362},
# {'Student2': '0591238', 'e-mail': 'ex@mail.com', 'student_num': 99305},
# {'Student3': '9213189', 'e-mail': 'ex@mail.com', 'student_num': 78360}
</code></pre>
<p><sup>*注意:根据需要实现随机数生成器。这个函数从样本总体返回随机整数。</sup></p>