要清空字典的文本文件

2024-10-03 04:27:01 发布

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

dictionary = {}
file = 'lightning.txt'
with open(file) as d:
    for line in d:
        pa = line.split()
        dictionary[pa[0]] = pa[1:]

print(dictionary)

我有一个文本文件,显示lightning球员及其进球和助攻,设置如下:

Stamkos
46
50
Hedman
30
50
Point
40
50

在单独的行中,我试图编写一个程序,将这个文本文件发送到字典,尽管我的输出并没有显示我想要的内容。词典以{'Stamkos': [], '46': [], '50': [],的形式出版。我试图摆脱空列表,只将名称作为键,目标和协助作为值,但没有任何效果


Tags: intxtfordictionaryaswithlineopen
3条回答

另一种将数字转换为整数的方法:

file = 'lightning.txt'
with open(file) as d:
    names = map(str.strip, d)
    ints = map(int, d)
    dictionary = {name: [next(ints), next(ints)]
                  for name in names}

结果(Try it online!):

{'Stamkos': [46, 50], 'Hedman': [30, 50], 'Point': [40, 50]}

您可以使用zip一次读取3行数据到3个单独的变量中:

players = dict()
with open("lightning.txt","r") as f:
    for name,goals,assists in zip(f,f,f):
        players[name.strip()] = [int(goals),int(assists)]

print(players)
{'Stamkos': [46, 50], 'Hedman': [30, 50], 'Point': [40, 50]}

或者在词典中:

with open("lightning.txt","r") as f:
    players = {name.strip():[*map(int,stats)] for name,*stats in zip(f,f,f)}

或拉链的(神秘)映射:

with open("lightning.txt","r") as f:
    players = dict(zip(map(str.strip,f),zip(*[map(int,f)]*2)))

您还可以将数据结构化为嵌套字典:

players = dict()
with open("lightning.txt","r") as f:
    for name,goals,assists in zip(f,f,f):
        players[name.strip()] = {"goals":int(goals),"assists":int(assists)}

print(players)
{'Stamkos': {'goals': 46, 'assists': 50}, 
 'Hedman': {'goals': 30, 'assists': 50}, 
 'Point': {'goals': 40, 'assists': 50}}

问题是这些值在不同的行中。使用^{}获取其他对象:

dictionary = {}
file = 'lightning.txt'
with open(file) as d:
    for line in d:
        dictionary[line.strip()] = [next(d).strip(), next(d).strip()]

print(dictionary)

输出

{'Stamkos': ['46', '50'], 'Hedman': ['30', '50'], 'Point': ['40', '50']}

相关问题 更多 >