【问题标题】:How to add values to a dictionary with the values as dictionaries如何将值添加到字典中,并将值作为字典
【发布时间】:2021-12-30 09:55:47
【问题描述】:

我觉得这应该很容易,但我在互联网上找不到它,我自己也想不通。我有一本字典,它的值是另一本字典。现在我想向这些 dic 值添加新数据。由于无法使用 append add 或 =,我该怎么做。

{'high': {0: '57798.68000000', 1: '57784.43000000', 2: '57909.99000000'}}

即使我不知道最后一个值键是什么,我也需要每次都添加它 3: .. 或 4:.. 等等。所以添加数据后它看起来像:

{'high': {0: '57798.68000000', 1: '57784.43000000', 2: '57909.99000000', 3:'54353', 4: '235234234'}}

谢谢!

【问题讨论】:

  • 请发布您到目前为止所尝试的内容
  • 添加新值的方式很简单,d['high'][3] = '54353'(需要事先确定当前最高的键)。但是,看起来d['high'] 实际上应该是一个列表。然后你可以使用append
  • dic['high'][3] = '54353'等或一步:dic['high'].update({3: '54353', 4: '235234234'})
  • @mkrieger1 是的,如果它是一个列表,那就更容易了。但我下载了一个数据框并将 a 转换为 dic。这就是它给我的格式
  • d['high'] = list(d['high'].values())

标签: python dictionary append


【解决方案1】:

如果您的“内部”字典的键实际上只是一个枚举:

my_dods = {'high': {0: '57798.68000000', 1: '57784.43000000', 2: '57909.99000000'}}
my_dods['high'][len(my_dods['high'])] = '54353'
my_dods['high'][len(my_dods['high'])] = '235234234'

【讨论】:

    【解决方案2】:

    尝试将其转换为字符串,然后再转换回字典

      import ast   
        thisdict = {
          "brand": "Ford",
          "electric": False,
          "year": 1964,
          "colors": ["red", "white", "blue"]
        }
        
        stra = str(thisdict)
        stra = stra.replace("}","")
        stra += ',"a":0}'
        x = ast.literal_eval(stra)
        print(x)
    

    【讨论】:

      【解决方案3】:

      你可以得到subdict的max key,增加得到一个新的:

      d = {'high': {0: '57798.68000000', 1: '57784.43000000', 2: '57909.99000000'}}
      
      def add_subdict(d, value, key='high'):
          d[key][max(d[key].keys())+1] = value
      
      add_subdict(d, '123')   
      add_subdict(d, '456')
      

      输出:

      >>> d
      {'high': {0: '57798.68000000',
        1: '57784.43000000',
        2: '57909.99000000',
        3: '123',
        4: '456'}}
      

      处理缺失键的版本:

      def add_subdict(d, value, key='high'):
          if key not in d:
              d[key] = {0: value}
              return
          d[key][max(d[key].keys())+1] = value
      
      d = {'high': {0: '57798.68000000', 1: '57784.43000000', 2: '57909.99000000'}}
      add_subdict(d, '456', key='other')
      
      # {'high': {0: '57798.68000000', 1: '57784.43000000', 2: '57909.99000000'},
      #  'other': {0: '456'}}
      

      【讨论】:

      • 这很好用啊!我将尝试在我的代码中实现这一点
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多