[英]Creating a Dictionary from txt
我在文本中有幾行,我希望將第一個單詞轉換為帶有功能的鍵(每個鍵之間有空格),其余作為值。 這是文本所包含的內容:
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(' ')
但是我不知道如何繼續(我刪除了大部分代碼),有什么建議嗎?
假設您設法提取出行尾沒有換行符的列表。
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))
有關如何構造字典的信息,請參見ForceBru的答案。 這是打印部分:
for k, (v1, v2) in your_dict.items():
print("Entered: {}\nLocation: {}\nName: {}\n".format(k, v1, v2))
您可以嘗試以下方法:
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']}
您可能要考慮使用namedtuple
。
from collections import namedtuple
code = {}
Code = namedtuple('Code', 'Entered Location Name')
filename = '/Users/ca_mini/Downloads/junk.txt'
with open(filename, 'r') as f:
for row in f:
row = row.split()
code[row[0]] = Code(*row)
>>> code
{'1A9345': Code(Entered='1A9345', Location='37659', Name='Delta'),
'221002': Code(Entered='221002', Location='93323', Name='Omega'),
'FFFB10': Code(Entered='FFFB10', Location='11290', Name='Charlie')}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.