Python 如何使用enumerate为字典理解添加额外值?
我希望能够访问Python 如何使用enumerate为字典理解添加额外值?,python,Python,我希望能够访问my_cal[30]['r']并获取所有范围。然后 使用my_cal[30]['wk'] 我试过这个: new_ranges={k:{'r':value,'week':i},用于枚举(my_cal.items(),1)中的i,(k,v) 以下是示例代码: my_cal={'somekey':1, '范围':{30:['08-1-2021'], 31: [ '08-2-2021', '08-3-2021', '08-4-2021', '08-5-2021', '08-6-202
my_cal[30]['r']
并获取所有范围。然后
使用my_cal[30]['wk']
我试过这个:
new_ranges={k:{'r':value,'week':i},用于枚举(my_cal.items(),1)中的i,(k,v)
以下是示例代码:
my_cal={'somekey':1,
'范围':{30:['08-1-2021'],
31: [ '08-2-2021',
'08-3-2021',
'08-4-2021',
'08-5-2021',
'08-6-2021',
'08-7-2021',
'08-8-2021'],
32: [ '08-9-2021',
'08-10-2021',
'08-11-2021',
'08-12-2021',
'08-13-2021',
'08-14-2021',
'08-15-2021']},
“lastkey”:1}
通缉结果:
my_cal={'somekey':1,
'范围':{30:'r':['08-1-2021'],'wk':1},
31:{'r':['08-2-2021',
'08-3-2021',
'08-4-2021',
'08-5-2021',
'08-6-2021',
'08-7-2021',
'08-8-2021']},{'week',2},
“lastkey”:1},
在下面的示例中,此打印不起作用,因为它抱怨tuple对象
没有属性项。它在我的房间里很好用
真代码。我不知道为什么它会把它转换成元组
对于键,my_cal.items()中的值:
打印(“键为:,键,值为:,“\n”)
您的代码中有一些输入错误,还有一个错误:
my_cal
的定义中,以逗号结尾,使其成为元组的第一个元素。删除最后一个尾随逗号
新的\u范围
,您正在对…中的(k,v)执行,但随后您将其称为值
,
new_ranges = {k: {'r': v, 'week': i} for i, (k, v) in enumerate(my_cal['ranges'].items(), 1)}
它为您提供了所需的新范围。然后,您可以将其分配回my_cal
中的ranges
,以获得所需的表单:
my_cal['ranges']=新的_范围
#输出:
{'somekey':1,
'范围':{30:{'r':['08-1-2021'],'week':1},
31:{'r':['08-2-2021',
'08-3-2021',
'08-4-2021',
'08-5-2021',
'08-6-2021',
'08-7-2021',
'08-8-2021'],
“周”:2},
32:{'r':['08-9-2021',
'08-10-2021',
'08-11-2021',
'08-12-2021',
'08-13-2021',
'08-14-2021',
'08-15-2021'],
“周”:3}},
“lastkey”:1}
编辑:Wrt“我希望能够访问my_cal[30]['r']
并获取所有范围。然后使用my_cal[30]['wk']
访问第一周-然后在new_ranges={…}
步骤后进行以下更改:
del my_cal['ranges']#删除原始的'ranges'键
我的校准更新(新范围)#添加新范围
#结果:
{'somekey':1,
“lastkey”:1,
30:{'r':['08-1-2021'],'week':1},
31:{'r':['08-2-2021',
'08-3-2021',
'08-4-2021',
'08-5-2021',
'08-6-2021',
'08-7-2021',
'08-8-2021'],
“周”:2},
32:{'r':['08-9-2021',
'08-10-2021',
'08-11-2021',
'08-12-2021',
'08-13-2021',
'08-14-2021',
'08-15-2021'],
“周”:3}
{'week',2}
是打字错误吗?应该是包含字典中的'week':2
?另外,'wk':1
应该是'week':1
?结果不应该是新的范围
,而不是我的校准
?你不应该迭代我的校准['ranges'].items()
?我在你发布的代码中没有看到任何东西会将我的校准
更改为元组。但是我怀疑你没有准确地复制代码。value
应该是v
,并且你不应该在{'r':value,'week':I}
之后有一个,
。如果你想wk
而不是week
,请在新的\u范围
循环中更改它。(我使用了您原始代码中的版本)谢谢,在enumerate(my_cal['ranges'].items(),1)中,这似乎对I(k,v)有效new_ranges={k:{'r':v,'week':I}
但是我丢失了somekey和lastkey,我是否手动添加它们?我怎样才能把它们包括在这个理解中?你不会失去它们的。当您执行my_-cal['ranges']=new_-ranges
时,它只更新ranges
,而不更新其他两个键,它们保持原样。这是我的回答,不客气。欢迎来到StackOverflow!如果有帮助,请阅读:,以及关于和。