【问题标题】:How to add a list after an existing list but not expand it?如何在现有列表之后添加列表但不展开它?
【发布时间】:2019-11-04 08:36:03
【问题描述】:

你好~这似乎是一个简单的问题,但我没有找到它被问和回答。

我有一本字典 data_dict,例如 {'keyId':['1','2','3']}。 现在我想添加一些新列表(即['a','b','c'])并使其像{'keyId':['1','2','3'],['a','b','c']},所以我这样做

for new_list in lists:
    data_dict[keyId].append(new_list)

但结果却像{'keyId':['1','2','3',['a','b','c']]}

【问题讨论】:

  • {'keyId':['1','2','3'],['a','b','c']} 不是 python 有效语法。

标签: python list dictionary data-structures


【解决方案1】:

{'keyId':['1','2','3'],['a','b','c']} 不是有效的 Python 数据结构。

您可以将keyId 实现为列表列表:

data_dict = {'keyId':[['1','2','3']]}

【讨论】:

    【解决方案2】:

    列表是不可散列的——你不能在字典中使用它们,因为它们是可变的。您可以改用列表的元组。

    data_dict = {'keyId':(['1','2','3'])}
    

    【讨论】:

      【解决方案3】:

      你需要一个唯一的键,一个可散列的东西,作为一个值,一个列表,然后你可以填充它:

      lists = [[2,3,4], [5,4,5], "abd"]
      
      data_dict = {}
      
      keyId = "hashable_obj"
      
      data_dict[keyId] = []
      
      for new_list in lists:
          data_dict[keyId].append(new_list)
      
      print(data_dict)
      

      输出:

      {'hashable_obj': [[2, 3, 4], [5, 4, 5], 'abd']}
      

      【讨论】:

        【解决方案4】:

        Python列表的重要特征如下:

        • 列表是有序的。
        • 列表可以包含任意对象。
        • 可以通过索引访问列表元素。
        • 列表可以嵌套到任意深度。
        • 列表是可变的。
        • 列表是动态的。

        列出项目,所以我建议使用基于列表的方法。这里是source link 了解列表和元组之间的关系。

        my_list = [[1,2,3], ['a', 'b', 'c']]
        my_dict = {}
        my_dict['KeyId'] = []
        for new_list in my_list:
            my_dict['KeyId'].append(new_list)
        

        输出

        {'KeyId': [[1, 2, 3], ['a', 'b', 'c']]}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-10-30
          • 2015-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多