使用迭代在字典中创建多个列表

时间:2016-11-11 11:37:20

标签: python


我目前正在为我的HTML页面编写一些逻辑。我的目标是在迭代中创建变量(列表)(使用迭代来创建所述列表的名称,因为它们的数量对于程序是未知的)。我目前正在创建这样的列表:

maps={}
    currentMap = elements[0].process
    counter=0
    for i in elements:
        if(counter==0):
            maps["mapsEle{0}".format(counter)]=[]
            counter+=1
        if(i.process!=currentMap):
            currentMap = i.process
            maps["mapEle{0}".format(counter)]=[]
            counter+=1
        else:
            print("No change found, keeping heading the same.")

然而,正如您可能知道的那样,这不会创建列表而是创建字符串。我尝试打印变量(例如mapsEle0)并返回变量名称(例如print(mapsEle0)返回“mapsEle0”)这也让我感到惊讶,因为我想如果字典将它保存为字符串就会打印出来“ []”点。

所以我正在寻找一种在我在那里使用的迭代中在字典中创建列表的方法,基本上只想重新格式化我的声明。大家提前干杯:)

修改:
这里要求的是我尝试追加的代码。请注意我想在列表中附加'i'而不是字典。

for i in maps:
        for x in elements:
            if(x.process!=currentMap):
                currentMap=x.process
            elif(x.process==currentMap):
                #i.append(x)

2 个答案:

答案 0 :(得分:1)

print语句的语法错误,如果要访问字典的内容,则需要使用不同的表示法。

而不是print('mapsEle0')您需要print(maps['mapsEle0'])

<强>更新

不幸的是,您对所需内容和代码的描述有点矛盾,所以如果可以的话,请尝试解释一下这段代码应该做些什么。

for i in maps.iterkeys():
        for x in elements:
            if(x.process!=currentMap):
                currentMap=x.process
            elif(x.process==currentMap):
                maps[i].append(x)

如果满足maps条件,这将迭代'mapsEle0'...'mapsEleN'x)的所有键并将elif添加到包含的列表中。

答案 1 :(得分:1)

您通过print(maps)打印字符串。 要打印字典,您必须print(maps['mapsEle0']) - &#39;打印整个字典,或者,打印特定的键/元素>>> maps = {} >>> counter = 0 >>> maps["mapsEle{0}".format(counter)]=[] >>> maps {'mapsEle0': []} >>> >>> print(maps) {'mapsEle0': []} >>> >>> print(maps['mapsEle0']) [] >>>

在这里进一步阐述解释器会议:

>>> maps['mapsEle1'].append('hello')
>>> print(maps['mapsEle1'])
['hello']

对于追加部分:

x

编辑2 :您的陈述仍不明确

  

这里要求的是我尝试追加的代码。请注意我   想要追加“我”进入列表,没有字典。

我认为sobek做得对 - 你想将mapsEle0追加到mapsEle1maps列表,这是for i in maps.iterkeys(): for x in elements: if(x.process!=currentMap): currentMap=x.process elif(x.process==currentMap): maps[i].append(x) 字典中的键。

string_json = sc.textFile('/folder/with/gzip/textfiles/')
json_objects = string_json.map(make_a_json)
DataRDD = json_objects.map(extract_data_from_json)
DataDF = sqlContext.createDataFrame(DataRDD,schema).collect()
'''followed by some transformations to the dataframe'''