【问题标题】:Appending to a nested list附加到嵌套列表
【发布时间】:2019-06-13 05:11:35
【问题描述】:

我正在使用嵌套列表在我创建的字典中查找值。然后我想将找到的值附加到列表中。我不知道如何编码的问题是如何将附加的值保留在同一个嵌套列表结构中?这是我将值附加到空列表的最后一行的代码。

#Creating a dictionary of FID: LU_Codes from external txt file
import sys, arcpy, string, csv

text_file = open("H:\SWAT\NC\FID_Whole.txt", "r")
Lines = text_file.readlines()
text_file.close()

FID_LU = map(string.split, Lines)
#print FID_LU
FID_GC_dict = dict(FID_LU)

Neighbors_file = open("H:\SWAT\NC\Sh_Neighbors2.txt","r")
Entries = Neighbors_file.readlines()
Neighbors_file.close()

Neighbors_List = map(string.split, Entries)

print Neighbors_List

#FID = [x[0] for x in Neighbors_List]
#print FID

gridList = []
for list in Neighbors_List:
    for item in list:
       #print FID_GC_dict[item]
       gridList.append(int(FID_GC_dict[item]))


 print gridList

这是邻居列表的输出(正确):

[['0', '1', '11', '12', '13'], ['1', '0', '2', '12', '13', '14'], ['2', '1', '3', '13', '14', '15'], ['3', '2', '4', '14', '15', '16'], ['4', '3', '5', '15', '16', '17'], ['5', '4', '6', '16', '17', '18'], ['6', '5', '7', '17', '18', '19'], ['7', '6', '8', '18', '19', '20'], ['8', '7', '9', '19', '20', '21'], ['9', '8', '20', '21', '22'], ['10', '11']]

这是 gridList 的输出(不正确):

[3, 3, 4, 4, 4, 3, 3, 3, 4, 4, 4, 3, 3, 3, 4, 4, 2, 3, 3, 3, 4, 2, 2, 3, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4]

我希望 gridList 的样子是:

[[3, 3, 4, 4, 4], [3, 3, 3, 4, 4, 4], [3, 3, 3, 4, 4, 2], [3, 3, 3, 4, 2, 2], [3, 3, 3, 2, 2, 2], [3, 3, 3, 2, 2, 3], [3, 3, 3, 2, 3, 3], [3, 3, 3, 3, 3, 3], [3, 3, 3, 3, 3, 3], [3, 3, 3, 3, 3], [3, 4]]

任何帮助将不胜感激。我是 python 新手……阅读这些帖子会有所帮助,但我正在努力解决这个问题。

谢谢!

【问题讨论】:

    标签: python nested-lists


    【解决方案1】:

    制作一个临时列表,row。将内循环中的项目追加到row,然后在外循环中,将行追加到gridList

    gridList = []
    for nlist in Neighbors_List:
        row = []
        for item in nlist:
           row.append(int(FID_GC_dict[item]))
        gridList.append(row)
    

    请注意,您也可以在此处使用list comprehension

    gridList = [[int(FID_GC_dict[item]) for item in nlist] 
                for nlist in Neighbors_List]
    

    PS。最好不要将变量命名为 list,因为它会隐藏同名的内置类型。

    【讨论】:

      【解决方案2】:

      您正在附加到单个列表。试试这个

      gridList = []
      for list in Neighbors_List:
          temp = []
          for item in list:
             #print FID_GC_dict[item]
             temp.append(int(FID_GC_dict[item]))
          gridList.append(temp)
      

      【讨论】:

        【解决方案3】:
        gridList = [int(FID_GC_dict[item]) for item in l for l in Neighbors_List]
        

        Python 的list comprehensions 很棒。学习他们,爱他们。 (注意这会返回一个元组列表,如果你想要一个列表列表,你可以嵌套推导。

        另外,不要使用list 作为变量名,因为它与内置的list 冲突

        【讨论】:

          猜你喜欢
          • 2020-06-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-23
          • 2015-09-28
          • 2017-11-17
          • 2017-10-31
          • 2012-11-25
          相关资源
          最近更新 更多