从tx创建字典

2024-10-03 21:29:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个文本中有几行,我希望将第一个单词转换成一个键(每个键之间有空格),并使用一个函数,其余的作为值跟随。 这是文本包含的内容:

FFFB10 11290 Charlie
1A9345 37659 Delta
221002 93323 Omega

这样做的目的是将第一个单词变成一个键,同时也可以直观地排列它(行在行的下面),因此第一个单词(FFFB10)是键,其余的是值,意思是:

Entered: FFFB10
Location: 11290
Name: Charlie

我试着从这个开始:

def code(codeenter, file):
  for line in file.splitlines():
    if name in line:
        parts = line.split(' ')

但我不知道如何继续(我删除了大部分代码),有什么建议吗?你知道吗


Tags: 函数in文本目的内容line单词直观
3条回答

你可以试试这个:

f = [i.strip('\n').split() for i in open('filename.txt')]

final_dict = {i[0]:i[1:] for i in f}

假设数据的结构如下:

FFFB10 11290 Charlie
1A9345 37659 Delta
221002 93323 Omega

您的输出将是:

{'FFFB10': ['11290', 'Charlie'], '221002': ['93323', 'Omega'], '1A9345': ['37659', 'Delta']}

参见ForceBru关于如何构建字典的回答。以下是打印部分:

for k, (v1, v2) in your_dict.items():
    print("Entered: {}\nLocation: {}\nName: {}\n".format(k, v1, v2))

假设您成功地提取了一个末尾没有换行符的行列表。你知道吗

def MakeDict(lines):
    return {key: (location, name) for key, location, name in (line.split() for line in lines)}

这是一个普通的字典理解,带有生成器表达式。前者是括号内的所有内容,后者在最后一对括号内。line.split以空格作为分隔符拆分一行。你知道吗


运行示例:

>>> data = '''FFFB10 11290 Charlie
... 1A9345 37659 Delta
... 221002 93323 Omega'''
>>> lines = data.split('\n')
>>> lines
['FFFB10 11290 Charlie', '1A9345 37659 Delta', '221002 93323 Omega']
>>> def MakeDict(lines):
...   return {key: (location, name) for key, location, name in (line.split() for line in lines)}
...   
>>> 
>>> MakeDict(lines)
{'FFFB10': ('11290', 'Charlie'), '1A9345': ('37659', 'Delta'), '221002': ('93323', 'Omega')}

如何格式化输出:

for key, values in MakeDict(lines).items():
    print("Key: {}\nLocation: {}\nName: {}".format(key, *values))

相关问题 更多 >