使用类python从文件构建字典

2024-03-28 15:14:19 发布

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

我正在尝试构建一个类,该类从一个文件构建字典,该文件接受列表中的第一个项,并使其成为键和列表值中的其余项。所以最后当我把这叫做

neighbors=Neighbors(FileName.txt)

但当我说

neighbors['New York']

它不会返回该键的值

class Neighbors(dict):

def __init__(self, fname):
    states=[]
    states1=[]
    states2=[]
    self.fname=open(fname)
    for line in self.fname:
        line=line[:-1]
        states.append(line)
    for line in states:
        states1.append(line.split(','))
    for line in states1:
         item=[x.strip(' ') for x in line]
         states2.append(item)
    a=dict([(t[0],t[1:]) for t in states2])

neighbors = Neighbors("us_states_adjacency.txt")
print neighbors

Tags: 文件inselftxt列表forlineneighbors
1条回答
网友
1楼 · 发布于 2024-03-28 15:14:19
def neighbors(fname):
    def make_line(adjacent_cities):
        line = [city.strip() for city in adjacent_cities.split(",")]
        return line[0],line[1:]
    return dict(map(make_line,open(fname)))

我想我应该怎么做。。。你知道吗

没有理由为此使用类。。。你只要一本字典

但是如果你真的想成为一个班级

class Neighbors(dict):
     def __init__(self,fname):
         def make_line(adjacent_cities):
              line = [city.strip() for city in adjacent_cities.split(",")]
              return line[0],line[1:]
         dict.__init__(self,map(make_line,open(fname)))

如果你不想改进你原来的类,你只想修复它,你只需要调用super inits方法

class Neighbors(dict):

    def __init__(self, fname):
        states=[]
        states1=[]
        states2=[]
        self.fname=open(fname)
        for line in self.fname:
            line=line[:-1]
            states.append(line)
        for line in states:
            states1.append(line.split(','))
        for line in states1:
             item=[x.strip(' ') for x in line]
             states2.append(item)
        dict.__init__(self,[(t[0],t[1:]) for t in states2]) # call super constructor on our dict ...

这里有一个更简单的类重写dict。。。你知道吗

class dummy(dict):
  def __init__(self,initializer):
      dict.__init__(self,initializer)

d = dummy([('a',2),('b',4)])
print d['a']
print d['c']

相关问题 更多 >