【问题标题】:Python Dictionary contains List as Value - How to update?Python字典包含列表作为值 - 如何更新?
【发布时间】:2011-05-30 11:20:23
【问题描述】:

我有一本字典,它具有列表的价值。

dictionary = { 
               'C1' : [10,20,30] 
               'C2' : [20,30,40]
             }

假设我想将 C1 列表中的所有值增加 10,我该怎么做?

dictionary.get('C1') 给了我列表,但我该如何更新呢?

【问题讨论】:

  • 哇!那很快。多谢!我是 Python 的新手,所以这个问题可能太愚蠢了。所有的答案都教会了我一些东西。谢谢。

标签: python list dictionary


【解决方案1】:
>>> dictionary = {'C1' : [10,20,30],'C2' : [20,30,40]}
>>> dictionary['C1'] = [x+1 for x in dictionary['C1']]
>>> dictionary
{'C2': [20, 30, 40], 'C1': [11, 21, 31]}

【讨论】:

  • 为什么C2在C1之前打印?
  • 从 Python 3.7 版开始,字典是有序的。在 Python 3.6 及更早版本中,字典是无序的。
【解决方案2】:

访问的字典值(在这种情况下为列表)是原始值,与用于访问它的字典分开。无论是否在字典中,您都将以相同的方式递增列表中的值:

l = dictionary.get('C1')
for i in range(len(l)):
    l[i] += 10

【讨论】:

    【解决方案3】:
    dictionary["C1"]=map(lambda x:x+10,dictionary["C1"]) 
    

    应该这样做......

    【讨论】:

      【解决方案4】:

      大概是这样的:

      original_list = dictionary.get('C1')
      new_list = []
      for item in original_list:
        new_list.append(item+10)
      dictionary['C1'] = new_list
      

      【讨论】:

      • 为什么是dictionary.get?因为它返回 None 并且不会引发异常?您只是不必要地延迟了异常,并且不存在的键与具有 None 值的现有键不同。
      【解决方案5】:

      为什么不完全跳过 .get 并做这样的事情呢?:

      for x in range(len(dictionary["C1"]))
          dictionary["C1"][x] += 10
      

      【讨论】:

        【解决方案6】:
        for i,j in dictionary .items():
            if i=='C1':
                c=[]
                for k in j:
                    j=k+10
                    c.append(j)
                    dictionary .update({i:c})
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-02-02
          • 2018-07-08
          • 2020-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多