嗨我觉得这是一个简单的问题,但我不知道这行代码被称为所以其我很难寻找它:(希望你能帮助我!如何结合数组列表获取python?
对于上下文我是从在Django的FQL查询得到的数据和这个代码是在Views.py。我想知道是否有任何方式这三条线合并或简化这一点。谢谢!
edu = result[0]['education']
educa = edu[0]['school']
education = educa['name']
嗨我觉得这是一个简单的问题,但我不知道这行代码被称为所以其我很难寻找它:(希望你能帮助我!如何结合数组列表获取python?
对于上下文我是从在Django的FQL查询得到的数据和这个代码是在Views.py。我想知道是否有任何方式这三条线合并或简化这一点。谢谢!
edu = result[0]['education']
educa = edu[0]['school']
education = educa['name']
简单地替代引用对于最后一个表达式中的变量名称:
education = result[0]['education'][0]['school']['name']
不确定这是否更具可读性。
谢谢你们!只是一个简短的问题这类请求代码的适当术语是什么?我想把它列入一个清单,使我的if语句更容易编写。如果有更好的方法,请让我知道。谢谢!此外,我会投票答复,当它让我:) – Jack 2012-08-04 16:47:44
有没有特别的行话;我们只是将表达式链接在一起而不是使用中间变量。因此,不是将表达式的结果存储在变量中,而是将新的表达式应用于变量,我们将表达式直接应用于前一个表达式的结果。 – 2012-08-04 16:50:50
真的没有一个“合适的术语”,因为它确实不像你认为的那么特别。也许你可以称之为“链接”。 'result [0]'和'result [0] ['education']'(你已经做了)和'result [0] ['education'] [0]'没有根本的概念上的区别。每个数组/键的访问表达式返回你访问的东西,然后你应用另一个数组/键访问该事物,等等。你可以永远做到这一点。 – 2012-08-04 16:55:24
Martijn是对的 - 我不确定可读性 - 如果你发现自己经常这样做,那么我会试图使用辅助函数......它使事情更清晰。
def get_education(edu, main_idx=0, edu_idx=0):
"Get the name of the school where education was received"
return edu[main_idx]['education'][edu_idx]['school']['name']
然后只需使用:
education = get_education(result)
这个函数是一个好主意,但是它保留在3行以防万一发生异常是很有用的,所以你可以看到_which_key/idx它抱怨 – 2012-08-04 17:01:37
@gnibbler我完全同意。刚刚提出的功能,以便它应该访问的信息不那么混乱。虽然使用黑暗魔法来捕捉它失败的可能性......但是这比它的价值更加麻烦! – 2012-08-04 17:25:39
保持它的3条线。它非常易读,而且运行时间也不会太长。
当您试图追踪该块中的KeyError
或IndexError
时,您会感谢我。
也许你可以改进变量名称。这是我的建议
education = result[0]['education']
school = education[0]['school']
school_name = school['name']
'education = result [0] ['education'] [0] ['school'] ['name']'? – dmmd 2012-08-04 16:46:05
非常感谢! – Jack 2012-08-04 16:48:55
...你有没有注意到你已经结合了'e = result [0]'和'edu = e ['education']'? – 2012-08-04 20:41:11