带文件的Python词典

2024-10-01 09:36:01 发布

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

我有一个.txt文件,其中包含如下文本行:

Godbals NO LO -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 0 0 1 -1 -1 1 -1 1 -1 1 1 -1

我的任务是定义一个过程,返回一个字典,它的键是文本行的第一个元素,即Godbals,值是-1,1,0的序列

我已经通过open方法导入了这个文件,并将其分配给变量strlist

这是我写的一段代码

def create_voting_dict(strlist):
    D = {} 
    splitlist = [k.split() for  k in strlist]
    for i in range(len(strlist)):
        intlist = [int(j) for j in splitlist[i][3:]]
        D.update({splitlist[i][0]:None })
        for p in intlist:
            D[splitlist[i][0]] = p
    return D

这将返回本词典

{'Cornyn': 1, 'McConnell': 1, 'Bingaman': -1, 'Talent': 1, 'Cochran': 1, 'Craig': -1, 'Lugar': 1, 'Clinton': 1, 'Domenici': 1, 'Rockefeller': -1, 'Gregg': 1, 'Lautenberg': -1, 'Chambliss': 1, 'Voinovich': -1, 'Murkowski': 1, 'Levin': -1, 'Pryor': 1, 'Martinez': 1, 'Harkin': -1, 'Johnson': 1, 'Bayh': -1, 'Byrd': -1, 'Coburn': 1, 'Bunning': 1, 'Reid': -1, 'Kennedy': -1, 'Shelby': 0, 'Sarbanes': -1, 'Bond': 1, 'Nelson1': 1, 'Dole': 1, 'Coleman': 1, 'Dorgan': -1, 'Durbin': -1, 'Reed': -1, 'Landrieu': 1, 'Schumer': 1, 'Santorum': 1, 'Snowe': 1, 'Lieberman': -1, 'Hutchison': 1, 'Lincoln': 1, 'DeMint': 1, 'Isakson': 1, 'Inhofe': 1, 'Dodd': -1, 'DeWine': 1, 'Frist': 1, 'Bennett': 1, 'Smith': 1, 'Thomas': 1, 'Enzi': 1, 'Thune': 1, 'Burr': -1, 'Boxer': -1, 'Allen': 1, 'Nelson2': 1, 'Kerry': -1, 'Murray': -1, 'Burns': 1, 'Allard': 1, 'Salazar': 1, 'Jeffords': -1, 'Akaka': -1, 'Sununu': 1, 'Biden': -1, 'Obama': -1, 'Cantwell': 1, 'Roberts': 1, 'Alexander': 1, 'McCain': 1, 'Collins': 1, 'Inouye': -1, 'Lott': 0, 'Feingold': -1, 'Kyl': 1, 'Feinstein': 1, 'Kohl': -1, 'Specter': 1, 'Stevens': 1, 'Ensign': 1, 'Carper': 1, 'Hatch': 1, 'Vitter': 1, 'Baucus': 1, 'Graham': 1, 'Grassley': 1, 'Wyden': -1, 'Hagel': 1, 'Dayton': 1, 'Mikulski': -1, 'Stabenow': 1, 'Leahy': -1, 'Sessions': 1, 'Crapo': 1, 'Conrad': -1, 'Warner': 1, 'Chafee': -1, 'Brownback': 1}

我知道我的代码是有缺陷的,我想找到一种方法来迭代地将-1,0,1附加到字典元素的值中。。。或者类似的


Tags: 文件方法no代码in文本txt元素
2条回答

您可以使用maxsplit3 split您的字符串,并使用set

>>> s="Godbals NO LO -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 0 0 1 -1 -1 1 -1 1 -1 1 1 -1"
>>> l=s.split(' ',3)
>>> d={l[0]:set(l[-1].split())}
>>> d
{'Godbals': set(['1', '0', '-1'])}

你可以开始用空格来分割字符串

split_line = line.split(" ")

然后,开始索引。据我所知,你的钥匙是

key = split_line[0]
value = split_line[3:]
final_dict = {key : value}

希望有帮助

相关问题 更多 >