【发布时间】:2016-12-17 21:45:29
【问题描述】:
创建新字典的场景很少:
- 只取列表中键“total”不为零的字典
- 从字典中删除键,例如“total”和“rank”
- 使用 'name' 键值作为键,使用 'game' 键值作为列表
新字典中的值 - 对新字典中的值列表进行排序
我的代码是:
# input dictionary
data =[
{'name': 'foo', 'rank': 3, 'game': 'football', 'total': 1},
{'name': 'bar', 'rank': 5, 'game': 'hockey', 'total': 0},
{'name': 'foo', 'rank': 7, 'game': 'tennis', 'total': 0},
{'name': 'foo', 'rank': 2, 'game': 'cricket', 'total': 2},
{'name': 'bar', 'rank': 1, 'game': 'cricket', 'total': 8},
]
result_list = []
merged_data = {}
result_data = {}
# Get the list of dict if key 'total' value is not zero
dict_without_total = [
den for den in data if den.get('total')
]
for my_dict in dict_without_total:
# deleting key 'brand' and 'total' from the
del my_dict['rank']
del my_dict['total']
result_data.update({
my_dict.get('name'): (my_dict.get('game'))
})
result_list.append(result_data)
# store all values of same keys in list and sort the values list
for result in result_list:
for keys, values in result.items():
if keys not in merged_data:
merged_data[keys] = []
merged_data[keys].append(values)
merged_data[keys].sort()
print merged_data
我的代码输出:
{
'bar': ['cricket', 'cricket', 'cricket'],
'foo': ['cricket', 'cricket', 'cricket']
}
预期结果:
{
'foo': ['cricket', 'football'],
'bar': ['cricket']
}
有没有更快的方法来获得结果,或者我可以使用一些 python 内置函数来处理这种情况?
【问题讨论】:
标签: python python-2.7 python-3.x