如何分配键并将其保存为 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 开始)值。
我是 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 开始)值。