在大型数据字典中存储变量

问题描述:

我可以在python中打印变量。在大型数据字典中存储变量

for h in jl1["results"]["attributes-list"]["volume-attributes"]: 
     state = str(h["volume-state-attributes"]["state"]) 
     if aggr in h["volume-id-attributes"]["containing-aggregate-name"]: 
       if state == "online": 

print(h["volume-id-attributes"]["owning-vserver-name"]), 
print(' '), 
print(h["volume-id-attributes"]["name"]), 
print(' '), 
print(h["volume-id-attributes"]["containing-aggregate-name"]), 
print(' '), 
print(h["volume-space-attributes"]["size-used"] 

这些打印函数返回例如100行。现在我只想打印基于“大小使用”过滤器的前5个值。 我试图在字典中取这些值并筛选出“size-used”的前五个值,但不知道如何将它们放入字典中。 (u'rcdn9-c01-sm-prod',),'usize':u'389120','vname':(u'nprd_root_m01',),''u'nprd_root_m01',' aggr':(u'aggr1_n01',)}

其他任何类似namedtuples的选项也是值得赞赏的。

感谢

要获取某个键排序词典列表,使用sorted。说我有字典与ab键列表,并希望通过b元素的值对它们进行排序:

my_dict_list = [{'a': 3, 'b': 1}, {'a': 1, 'b': 4}, {'a': 4, 'b': 4}, 
       {'a': 2, 'b': 7}, {'a': 2, 'b': 4.3}, {'a': 2, 'b': 9}, ] 


my_sorted_dict_list = sorted(my_dict_list, key=lambda element: element['b'], reverse=True) 
# Reverse is set to True because by default it sorts from smallest to biggest; we want to reverse that 

# Limit to five results 
biggest_five_dicts = my_sorted_dict_list[:5] 

print(biggest_five_dicts) # [{'a': 2, 'b': 9}, {'a': 2, 'b': 7}, {'a': 2, 'b': 4.3}, {'a': 1, 'b': 4}, {'a': 4, 'b': 4}] 
+0

我的第一个问题是如何创建从字典变量。像这个“{'vserver':(u'rcdn9-c01-sm-prod',),'usize':u'389120','vname':(u'nprd_root_m01',),'aggr':(u 'aggr1_n01',)}“ – user3114051

heapq.nlargest is the obvious way to go here

import heapq 

interesting_dicts = ... filter to keep only the dicts you care about (e.g. online dicts) ... 

for large in heapq.nlargest(5, interesting_dicts, 
          key=lambda d: d["volume-space-attributes"]["size-used"]): 
    print(...) 
+0

我的第一个问题是如何从变量创建字典。像这个“{'vserver':(u'rcdn9-c01-sm-prod',),'usize':u'389120','vname':(u'nprd_root_m01',),'aggr':(u 'aggr1_n01',)}” – user3114051