如何分配键并将其保存为 python 中的字典?

How to assign keys and save it as dictionary in python?

我是 python 的新手。我正在处理一个类似于以下内容的 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"
}

你应该保留一个字典来保存csv文件中每个单词的值,然后用一个列表来保存重复的对(value, word)

示例:

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就是你想要的。它不会是字典,而是列表,因为字典不允许重复键。

我可能会做这样的事情(你必须用 open('file.csv', 'r') 替换 StringIO(txt) 部分):

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)

您好,抱歉(还不能发表评论)

首先: 字典被命名为由字符串索引。 因此,您的 "dictionary" 示例是不可能的。

拥有 "natural" 数字索引的列表或元组。 唯一要做的就是避免双打(人,猫)。 然后你很容易使用: first_value = name_of_list_or_tuple[0] ...对于第一个(从 0 开始)值。