访问嵌套字典的数据

时间:2016-05-07 06:32:04

标签: python dictionary

我正在使用dicts以这种格式存储一些数据:

users_data = {'user_1':{'Name':'Carlos','Age':25,'address':'adress','height':170},
             'user_2':{'Name':'Pedro','Age':22,'address':'adress','height':175},
             'user_3':{'Name':'Ana','Age':51,'address':'adress','height':163}}

所以我可以这样做:

users_data['user_1']['Age']       

25

`users_data`['user_1']['height'] 

170

但是如果我需要在其他功能中不断使用这些数据,这开始变得烦人,例如,如果我有:

def foo(age,address,height):
     do something 

我需要调用函数:

foo(users_data`['user_1']['age'] ,users_data`['user_1']['address'],users_data`['user_1']['height'] )

有一个更短的方法吗?类似的东西:

users_data['user_1'][['age','address','height']]

2 个答案:

答案 0 :(得分:3)

你可以这样做:

foo(*(users_data['user_1'][k] for k in ('Age', 'address', 'height')))

有关详细信息,请参阅Unpacking Argument Lists

答案 1 :(得分:1)

像这样更改你的功能

In [28]: def foo((a,b,c)):
    print a,b,c

用你的词典做一些这样的事情。

In [29]: from operator import itemgetter
In [30]: foo(itemgetter('Age', 'address', 'height')(users_data['user_1']))
如果传递了多个参数,

itemgetter将返回一个元组。有关itemgetter

的更多参考