Как назначить ключи и сохранить их как словарь в Python? - PullRequest
0 голосов
/ 04 июля 2019

Я новичок в питоне.Я работал с файлом CSV, который выглядит примерно так:

man,nut,bag
rat,cat
dog,fog,cat,man

Дело в том, что я хочу назначить уникальный номер каждому из этих значений в файле CSV, так что уникальный номер действует как ключ иэлемент в CSV действует как значение, как в словаре.Также, если какое-либо значение повторяется в CSV-файле, я не хочу назначать ему другую клавишу.

Желаемый результат должен быть примерно таким:

dictionary=
{
1: "man",
2: "nut",
.
.
.
6: "dog",
7: "fog",
5: "cat",
1: "man"
}

Ответы [ 3 ]

0 голосов
/ 04 июля 2019

я бы, наверное, сделал что-то подобное (вам пришлось бы заменить StringIO(txt) часть на open('file.csv', 'r')):

from io import StringIO
from csv import reader

txt = """man,nut,bag
rat,cat
dog,fog,cat,man"""

dct = {}

with StringIO(txt) as file:
    rows = reader(file)
    for row in rows:
        for word in row:
            if word not in dct:
                dct[word] = len(dct)
# {'man': 0, 'nut': 1, 'bag': 2, 'rat': 3, 'cat': 4, 'dog': 5, 'fog': 6}

и если вы хотите избежать импорта csv любой ценой (почему ?!), вы можете просто разбить каждую строку вашего файла:

with StringIO(txt) as file:
    for line in file:
        row = line.strip().split(",")
        for word in row:
            if word not in dct:
                dct[word] = len(dct)
0 голосов
/ 04 июля 2019

Привет и извините (пока не могу комментировать)

Прежде всего: dict назван проиндексированным в виде строки.Поэтому ваш пример «словаря» невозможен.

Список или кортеж, владеющий индексацией «натуральных» чисел.Единственное, что нужно сделать, это избежать двойников (человек, кот).Затем вы легко используете: first_value = name_of_list_or_tuple[0] ... для самого первого (начинается с 0) значения.

0 голосов
/ 04 июля 2019

Вы должны сохранить словарь, чтобы сохранить значение каждого слова в файле CSV, а затем использовать список, чтобы сохранить повторяющиеся пары (значение, слово)

Пример:

value_of_word_dict = {}
for word in csv:
    value_of_word_dict[word] = # assign value to the word

value_of_word_dict = {'man':1, 'nut':2, 'bag':3, 'rat':4, 'cat':5, 'dog':6, 'fog':7}

output = []
for word in csv:
    word_value = value_of_word_dict[word]
    output.append((word_value, word))
output = [
(1, "man")
(2, "nut"),
(3, "bag"),
(4, "rat"),
(5, "cat"),
(6, "dog"),
(7, "fog"),
(5, "cat"),
(1, "man")
]

Переменная output - это то, что вы хотите. Это будет не словарь, а список, так как словари не позволяют повторять ключи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...