首页 > 解决方案 > 循环循环动态大小的python字典

问题描述

我正在尝试创建一个遍历字典并将值分配给另一个字典的循环,消除不必要的并按部分对变量字典进行分组。主字典有坐标、url 和图像。

diccionario = {
    'coordenadas': ['e8da9f84fe', 'R', 'R', 'RF', '1c3278cc7e0d', 'RF'], 
    'url': ['www.aaaa.org', '&', '&', '&F', 'wwww.bbbbb.org', '&F'],
    'imagen': [ 'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5QgEFicFh0tlLwAAAcNJREFUSMftlr9LHEEUxz9v9pa7K/Q2l1yjmEJtDGkC8SoNHgiCXQoLScSEQMDCBIz/gpA/IcTKv8C/wEIIWFgKFoKFjWcjIrnDO8nMsxlhkUu8X3uX4h4MO/vmMZ', '/h7XffG1FV+mGGPtkA/P+DRWRcRGZ6Ck6lUiEwB2wYYzI9A1trXwNPgOequtITsDEmAqZjrlURGUscrKolIIy5MsBGomARmQDGGyzNisibRMBeUKV/hHwLgiDTdbC1tgjkYq5nQDr2PuqcW206e800CWNMXlXf+287BkwCT/2zDvwGqkANeKeqZ49msElBzQNTwAQw9GA57UfOH2ATWO8YHARBCCwALx4JDYE88NIYk3HO1ToCZ7PZP9Vq', 'dQt4BXwGhv8SegV8B07CMLztWFyVSkX9AQNgDdhtELYDLANFIF2v111XVK2qJ148b4FD4BNw5OeLQBn4AVyq6l7XVH3/H1trP/hU3wD7vph8BSKgbIxZstbWugr2lWvEp/Te4vOPqnqUSMlU1XPgoMHSdivQtppEoVA4AC5iruMoin623BdVteUhIjngC/ALGGlnjxRtmHPuWkT2gFOf/tavToML/QCclN0B6/vQXpiVJtAAAAAASUVORK', '5CYII=', 'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeAgMAAABGXkYxAAAADFBMVEX/wCfu7u7////mzZGcfw44AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5QgFAQAIgup5ZwAAAM9JREFUGNNFkD0KwkAQhb8QYiFusNQD2FspokKOsIWNIGhhIgELwYtYqCEhRY6QI+wlLAQLD2BhZSOCs1toNR+8+XlvOMfZc5rkFWluYJRo0iPgCZx3Al', 'xFMhYGmgwmoCrWqI40aTTqLZqmJrzM4E7EpYihTeQXy7kRMP4r6hr6GIK6hwA09nO3FFUkBwdh9iodeCu1lWLwyrB0U/52pAUi/FOys5sJio09UdPcLOxRTWv8sDbE+/CGV1mrLWf1Z/4f5xcwFm0g2eUJ5iNP+AKAl0BF7aOg3AAAAABJRU5ErkJggg==']
    }

从该字典中,我想要做的是将 '''diccionario['imagen'] 与列表中的其余字符串连接,以便能够加入编码图像。每个图像的范围从 '''diccionario['coordenadas']''' 的第一个十六进制值开始,到下一个十六进制值结束并包含一个 url。我尝试了以下代码,但收到了几个错误,我知道它不能为我解决问题,因为它不会在下一个十六进制值中停止循环并将其放入新的字典列表中

diccionariofinal = {
    'coordenadas': [], 
    'url': [],
    'imagen': [],
    }


for z in range(len(diccionario['coordenadas'])):
    if len(diccionario['coordenadas'][z]) > 2:
        diccionariofinal['coordenadas'].append[z] = diccionario['coordenadas'][z]
        diccionariofinal['url'].append[z]= diccionario['url'][z]
        diccionariofinal['imagen'].append[z]=diccionario['imagen'][z]
        pase = z
    if diccionario['coordenadas'][z] == "R":
        diccionariofinal['imagen'].append[pase]+=diccionario['imagen'][z]
    if diccionario['coordenadas'][z] == "RF":
        diccionariofinal['imagen'].append[pase]+=diccionario['imagen'][z]

print(diccionariofinal)

虽然现在字典只包含两个图像块,但这仅用于测试,范围必须是动态的才能添加更多块并连接图像的字符串。

最后的字典应该是这样的:

diccionariofinal = {
    'coordenadas': ['e8da9f84fe','1c3278cc7e0d'], 
    'url': ['www.aaaa.org','wwww.bbbbb.org'],
    'imagen': ['iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5QgEFicFh0tlLwAAAcNJREFUSMftlr9LHEEUxz9v9pa7K/Q2l1yjmEJtDGkC8SoNHgiCXQoLScSEQMDCBIz/gpA/IcTKv8C/wEIIWFgKFoKFjWcjIrnDO8nMsxlhkUu8X3uX4h4MO/vmMZ/h7XffG1FV+mGGPtkA/P+DRWRcRGZ6Ck6lUiEwB2wYYzI9A1trXwNPgOequtITsDEmAqZjrlURGUscrKolIIy5MsBGomARmQDGGyzNisibRMBeUKV/hHwLgiDTdbC1tgjkYq5nQDr2PuqcW206e800CWNMXlXf+287BkwCT/2zDvwGqkANeKeqZ49msElBzQNTwAQw9GA57UfOH2ATWO8YHARBCCwALx4JDYE88NIYk3HO1ToCZ7PZP9VqdQt4BXwGhv8SegV8B07CMLztWFyVSkX9AQNgDdhtELYDLANFIF2v111XVK2qJ148b4FD4BNw5OeLQBn4AVyq6l7XVH3/H1trP/hU3wD7vph8BSKgbIxZstbWugr2lWvEp/Te4vOPqnqUSMlU1XPgoMHSdivQtppEoVA4AC5iruMoin623BdVteUhIjngC/ALGGlnjxRtmHPuWkT2gFOf/tavToML/QCclN0B6/vQXpiVJtAAAAAASUVORK5CYII=', 'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeAgMAAABGXkYxAAAADFBMVEX/wCfu7u7////mzZGcfw44AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5QgFAQAIgup5ZwAAAM9JREFUGNNFkD0KwkAQhb8QYiFusNQD2FspokKOsIWNIGhhIgELwYtYqCEhRY6QI+wlLAQLD2BhZSOCs1toNR+8+XlvOMfZc5rkFWluYJRo0iPgCZx3AlxFMhYGmgwmoCrWqI40aTTqLZqmJrzM4E7EpYihTeQXy7kRMP4r6hr6GIK6hwA09nO3FFUkBwdh9iodeCu1lWLwyrB0U/52pAUi/FOys5sJio09UdPcLOxRTWv8sDbE+/CGV1mrLWf1Z/4f5xcwFm0g2eUJ5iNP+AKAl0BF7aOg3AAAAABJRU5ErkJggg=='],
    }

从十六进制数到“RF”(含),连接同一范围内的所有“图像”值“&”、“R”、“RF”是列表填充,“RF”标记图像合成的结束,这些字符串无效,必须删除 有人可以给我任何帮助或想法吗?

标签: pythondictionary

解决方案


append是一种方法,因此您不能使用方括号表示法,例如append[z]. 相反,您需要将值作为参数传递.append(value)。另一方面,当您需要将字符串附加到字符串时,您不能使用.append. 而是使用[-1],这将为您提供最后一个条目。无需为此维护 a pase

zip当您必须在“串联”中遍历多个列表时,也可以使用它:

for coord, url, img in zip(diccionario['coordenadas'],
                           diccionario['url'], 
                           diccionario['imagen']):
    if coord in ("R", "RF"):
        diccionariofinal['imagen'][-1] += img
    else:
        diccionariofinal['coordenadas'].append(coord)
        diccionariofinal['url'].append(url)
        diccionariofinal['imagen'].append(img)

print(diccionariofinal)

推荐阅读