python-3.x - Python:值未正确分配给循环中的键
问题描述
我正在尝试在 Python 中创建校准调度程序。为了测试该程序,我只想能够生成随机日期以分配给每个仪器的“属性”。由于我无法解释的原因,输出清楚地表明它randdays
是正确随机化的,但当分配给last_calibrated
“属性”时,它表明所有仪器的值相同!为什么会这样,我该如何避免?
instrument_props = {"last_calibrated": None,
"calibration_due": None,
"calibration_expired": None,
"installed": None,
"replaced_by": None}
instruments = {}
start_date = datetime.date(2020, 1, 1)
end_date = datetime.date(2020, 2, 1)
time_between_dates = end_date - start_date
days_between_dates = time_between_dates.days
for instrument in [4167,4958,4959,4960,4961,4962,4963,4964,4965,4966,4967,4968,4969,4970,4971,4972]:
instruments[instrument] = instrument_props
randdays = random.randrange(days_between_dates)
print(randdays)
instruments[instrument]['last_calibrated'] = start_date + datetime.timedelta(days=randdays)
pp.pprint(instruments)
这是上述代码的输出:
24
25
30
25
0
24
23
9
23
20
16
30
3
20
21
29
{ 4167: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4958: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4959: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4960: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4961: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4962: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4963: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4964: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4965: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4966: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4967: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4968: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4969: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4970: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4971: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None},
4972: { 'calibration_due': None,
'calibration_expired': None,
'installed': None,
'last_calibrated': datetime.date(2020, 1, 30),
'replaced_by': None}}