我正在使用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']]
答案 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