Python: написать dict в csv без изменения порядка ключей и значений? - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь записать dict в csv с первым столбцом, заполненным ключами, вторым столбцом, заполненным значениями, и только одним ключом / значением в строке.

import csv
myDict = {'key1': ['apple', 'kiwi'], 'key2': ['haha','lol'], 'key3': ['meat']}


f= open('file.csv', 'w', newline='')
with open('file.csv', 'w', newline='') as f:
    writer = csv.writer(f,delimiter=',')
    for key, values in myDict.items():
        for value in values:    
            writer.writerow([key, value])

Оптимальный вывод должен быть:

key1,apple
key1,kiwi
key2,haha
key2,lol
key3,meat

Однако, когда я запускаю код, он не всегда записывает ключи и значения в желаемом порядке, он случайным образом записывает ключи и значения в csv.

(Справочная информация: упорядочение ключей и значений является результатом кодирования превью)

Не могли бы вы указать, что я здесь упустил?Заранее спасибо!

1 Ответ

0 голосов
/ 27 февраля 2019

Решение на основе отсортированных ключей (не сохраняет исходную структуру данных).Не уверен, что это тот, который вы ищете.

import csv

data = {'key1': ['apple', 'kiwi'], 'other_key1': ['lemon', 'kiwi'],
        'key2': ['haha', 'lol'], 'key233': ['meat'],
        'key3': ['meat']}

with open('out.csv', 'wb') as f:
    writer = csv.writer(f, delimiter=',')
    for key in sorted(data.keys()):
        for value in data[key]:
            writer.writerow([key, value])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...