Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用enumerate为字典理解添加额外值?_Python - Fatal编程技术网

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)执行
    ,但随后您将其称为

  • 在听写理解的值部分后面加一个逗号

  • 此外,您应该在my_cal['ranges'].items()上迭代。无论如何,如果将该行更改为:

    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!如果有帮助,请阅读:,以及关于和。