Проведя быстрое исследование, я обнаружил, что нет способа по-настоящему отсортировать словарь. Однако есть обходные пути, и я использовал предложенный здесь пользователя Malik.
Я провел этот тест и получил:
>>> test={"im2":1,"im4":2,"im3":-1,"im1":5}
>>> {x:test[x] for x in sorted(test)}
{'im1': 5, 'im2': 1, 'im3': -1, 'im4': 2}
это именно то поведение, которое я ищу. Любая помощь или предложение приветствуется.
Однако, когда я пытаюсь включить его в свой код, ничего не меняется. Вот код:
def loop_solution(filenames):
mydic={'im'+str(index): import_file_astro(filename) for index, filename in enumerate(filenames, start=1) if filename is not None}
print mydic
mydic_upd={'im'+str(i):mydic.values()[0] for i in range(1,5) if 'im'+str(i) not in mydic}
mydic=dict(mydic, **mydic_upd)
print mydic
mydic={y:mydic[y] for y in sorted(mydic)}
print mydic
return
loop_solution([None,'CO21_m100_100_final',None,'CO43_m100_100_final'])
и вывод:
{'im2': <astropy.io.fits.hdu.image.PrimaryHDU object at 0x11b6dc690>, 'im4': <astropy.io.fits.hdu.image.PrimaryHDU object at 0x11b7461d0>}
{'im1': <astropy.io.fits.hdu.image.PrimaryHDU object at 0x11b6dc690>, 'im3': <astropy.io.fits.hdu.image.PrimaryHDU object at 0x11b6dc690>, 'im2': <astropy.io.fits.hdu.image.PrimaryHDU object at 0x11b6dc690>, 'im4': <astropy.io.fits.hdu.image.PrimaryHDU object at 0x11b7461d0>}
{'im1': <astropy.io.fits.hdu.image.PrimaryHDU object at 0x11b6dc690>, 'im3': <astropy.io.fits.hdu.image.PrimaryHDU object at 0x11b6dc690>, 'im2': <astropy.io.fits.hdu.image.PrimaryHDU object at 0x11b6dc690>, 'im4': <astropy.io.fits.hdu.image.PrimaryHDU object at 0x11b7461d0>}
Я в недоумении, в чем может быть проблема.
return mydic
в конце вашей функции, а затемmydic = loop_solution([...........])
вне вашего определения? - person vash_the_stampede   schedule 11.09.2018for key in sorted(my_dict.keys())
и сохранить - person FlyingTeller   schedule 11.09.2018def loop_solution(filenames, mydic)
передать в функцию пустойmydic
? - person vash_the_stampede   schedule 11.09.2018return mydic
- person vash_the_stampede   schedule 11.09.2018