players = [{'name': 'John','points': '27','Played': '6'},{'name': 'Emil','points': '43','Played' : '13'},{'name': 'Susan','points': '11','Played': '2'},{'name': 'Peter','points': '4','Played': '3'}]
我想做的是能够说:
players["John"]["score"]=newscoreplayers["john"]["Played"] = players["john"]["Played"]+1
此列表表示对象列表,其中名称是主键,然后是每个对象的theres参数.
但是当然不起作用,我能够通过以下方式触摸元素:
print (players[0]["score"])
然后这将打印出Johns得分好,但是通过这种方式,我需要通过所有玩家[x]首先比较一下,如果名字是相同的,然后我可以访问它,它对我来说似乎不是那么Python.
你会怎样以pythonic方式进行此 *** 作?
解决方法 您可以使用可以提供指定的专用更新方法的类来包装当前数据,而不必更改原始数据的整个结构:class Row: def __init__(self,row): self.row = row def __setitem__(self,_t,_val): self.row[_t] = str(_val) def __getitem__(self,_stat): return int(self.row[_stat]) def __repr__(self): return '{}({})'.format(self.__class__.__name__,str(self.row))class Players: def __init__(self,data={}): self.data = {i['name']:Row(i) for i in data} def __getitem__(self,name): return self.data[name] def __setitem__(self,_name,_data): self.data[_name] = Row(_data) def __repr__(self): return '{}({})'.format(self.__class__.__name__,str(self.data))players = [{'points': '27','name': 'John',{'points': '43','name': 'Emil','Played': '13'},{'points': '11','name': 'Susan',{'points': '4','name': 'Peter','Played': '3'}]d = Players(players)d['John']['points'] = 30d["John"]["Played"] = d["John"]["Played"]+1print(d['John'])d['Bob'] = {'points': '2','Played': '5'}
输出:
Row({'points': '30','Played': '7'})总结
以上是内存溢出为你收集整理的如何索引到词典列表?全部内容,希望文章能够帮你解决如何索引到词典列表?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)