代码之家  ›  专栏  ›  技术社区  ›  Ahmad

如何在python中更新字典中的列表值

  •  -1
  • Ahmad  · 技术社区  · 6 年前

    perfect_data = {
        "1":   [1, 1, 0,  0, 0,  1, 1, 1,
                1, 1, 0,  0, 0,  1, 1, 1,
                1, 1, 1,  0, 0,  1, 1, 1,
                1, 1, 1,  0, 0,  1, 1, 1,
                1, 1, 1,  0, 0,  1, 1, 1,
                1, 1, 1,  0, 0,  1, 1, 1,
                1, 1, 1,  0, 0,  1, 1, 1,
                1, 1, 1,  0, 0,  1, 1, 1 ], }
    

    0 具有 -1 在这条格言中。 这就是我所尝试的:

    for key in perfect_data.keys():
        perfect_data[key]*=2-1
        print(perfect_data[key])
    

    5 回复  |  直到 6 年前
        1
  •  1
  •   Ahmad    6 年前

    这就是我所尝试和工作的:

    for key,value in perfect_data.items():
        perfect_data[key]=[2*x-1 for x in value]
        print(perfect_data[key])
    
        2
  •  1
  •   grapes    6 年前

    不知道,你想实现什么,但如果严格按照你的问题,答案是:

    perfect_data = {
        "1":   [1, 1, 0,  0, 0,  1, 1, 1,
                1, 1, 0,  0, 0,  1, 1, 1,
                1, 1, 1,  0, 0,  1, 1, 1,
                1, 1, 1,  0, 0,  1, 1, 1,
                1, 1, 1,  0, 0,  1, 1, 1,
                1, 1, 1,  0, 0,  1, 1, 1,
                1, 1, 1,  0, 0,  1, 1, 1,
                1, 1, 1,  0, 0,  1, 1, 1 ], 
    }
    
    for k,v in perfect_data.items():
        perfect_data[k] = [x or -1 for x in v]
    
    print(perfect_data)
    

    {'1': [1, 1, -1, -1, -1, 1, 1, 1, 1, 1, -1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1]}
    

    陈述 x or -1 0 False or-operator non-false 论点

        3
  •  1
  •   Sumit S Chawla    6 年前

    更换这条线 perfect_data[key]*=2-1 具有 perfect_data[key] = [x*2 -1 for x in perfect_data[key]]

    for key in perfect_data.keys():
        perfect_data[key] = [x*2 -1 for x in perfect_data[key]]
        print(perfect_data[key])
    

    输出:

    {'1': [1,  1,  -1,  -1,  -1,  1,  1,  1,  1,  1,  -1,  -1,  -1,  1,  1,  1,  1,  1,  1,
    -1,  -1,  1,  1,  1,  1,  1,  1,  -1,  -1,  1,  1, 1,  1,  1,  1,  -1,  -1,  1,  1,  1,
    1,  1,  1,  -1,  -1,  1,  1,  1,  1,  1,  1,  -1,  -1,  1,  1,  1,  1,  1,  1,  -1,  -1,  1,  1,  1]}
    
        4
  •  1
  •   bruno desthuilliers    6 年前

    如果我明白了这一点,请尝试以下方法:

    for value in perfect_data.values():
      for i, e in enumerate(value):
        if e == 0: 
          value[i] = -1
    print(perfect_data)
    
        5
  •  0
  •   Kian    6 年前

    perfect_data['1'] = [i if i else -1 for i in perfect_data['1']]
    
        6
  •  0
  •   Mh Wahla    4 年前

    见此:

    DATA = {"records": [{"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"}]}
    
    
    
    for name, datalist in DATA.iteritems():  # Or items() in Python 3.x
    
    
        for datadict in datalist:
    
            for key, value in datadict.items():
    
                if value == "AAA":
    
                    datadict[key] = "XXX"
    
    
    print (DATA)