新手提问,python问题,先谢谢了。
defranking_judge(self,user_id,interface_id):ranking={}if(interface_id==0):ran=ranking...
def ranking_judge(self,user_id,interface_id):
ranking= {}
if(interface_id==0):
ran= ranking_api.data_return(self,user_id)
if ran:
rank= sorted(ran,reverse = True,key = lambda x:x['lv'])
for i in range(200):
ranking['ranking']= rank
return ranking
def data_return(self,user_id):
rankinglist={}
user_info=user_data.storage().user_info(user_id) #这里是我调用数据库的方法
if user_info:
rankinglist['name']= user_info['nickname']
rankinglist['lv']= user_info['user_grade']
if user_info['league_id']==1:
rankinglist['league_id']= user_info['league_id']
if user_info['league_id']==0:
rankinglist['league_id']= True
return rankinglist
提示错误:string indices must be integers, not str
请高手帮帮忙了!
rank= sorted(ran,reverse = True,key = lambda x:x['lv'])
这里错误 展开
ranking= {}
if(interface_id==0):
ran= ranking_api.data_return(self,user_id)
if ran:
rank= sorted(ran,reverse = True,key = lambda x:x['lv'])
for i in range(200):
ranking['ranking']= rank
return ranking
def data_return(self,user_id):
rankinglist={}
user_info=user_data.storage().user_info(user_id) #这里是我调用数据库的方法
if user_info:
rankinglist['name']= user_info['nickname']
rankinglist['lv']= user_info['user_grade']
if user_info['league_id']==1:
rankinglist['league_id']= user_info['league_id']
if user_info['league_id']==0:
rankinglist['league_id']= True
return rankinglist
提示错误:string indices must be integers, not str
请高手帮帮忙了!
rank= sorted(ran,reverse = True,key = lambda x:x['lv'])
这里错误 展开
1个回答
展开全部
索引必须是整数。
rank= sorted(ran,reverse = True,key = lambda x:x['lv'])你是想按某个属性来排序。
key = lambda x:x['lv']中的x['lv']是错误的写法,应该是x[0],x[1]......例:
>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> print sorted(L, key=lambda x:(x[1],x[0]))
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
先按第二个排序,在按第一个属性排序。
或者直接key=lambda x:x.lv
rank= sorted(ran,reverse = True,key = lambda x:x['lv'])你是想按某个属性来排序。
key = lambda x:x['lv']中的x['lv']是错误的写法,应该是x[0],x[1]......例:
>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> print sorted(L, key=lambda x:(x[1],x[0]))
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
先按第二个排序,在按第一个属性排序。
或者直接key=lambda x:x.lv
追问
f = [{'name':'abc','age':20},{'name':'def','age':30},{'name':'ghi','age':25}]
f2 = sorted(f,reverse = True,key = lambda x:x['age'])
print f2
这能从大到小排列哦。还有这样写(x[0],x[1])的话好像很麻烦,因为它是一个用户信息,里面很多字段。
追答
你循环取下ran里面的数据,这样取
for x in ran:
print x['lv']
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询