从字典键值对中删除空格

时间:2016-03-11 03:28:33

标签: python

所以这是我在一起添加dicts的程序的代码。

SELECT [imucc_awdb].[dbo].[Call_Type].[CallTypeID],
        [imucc_awdb].[dbo].[Call_Type].[EnterpriseName],
        [imucc_awdb].[dbo].[Call_Type_SG_Interval].SkillGroupSkillTargetID,
        [imucc_awdb].[dbo].[Skill_Group].[EnterpriseName],
        [imucc_awdb].[dbo].[Skill_Group_Member].[SkillGroupSkillTargetID],
        [imucc_awdb].[dbo].[Agent].[SkillTargetID],
        [imucc_awdb].[dbo].[Agent].[EnterpriseName]
  FROM [imucc_awdb].[dbo].[Call_Type] join [imucc_awdb].[dbo].[Call_Type_SG_Interval] on [imucc_awdb].[dbo].[Call_Type].CallTypeID=[imucc_awdb].[dbo].[Call_Type_SG_Interval].CallTypeID
  join Skill_Group
  on [imucc_awdb].[dbo].[Call_Type_SG_Interval].SkillGroupSkillTargetID=[imucc_awdb].[dbo].[Skill_Group].[SkillTargetID]
  join Skill_Group_Member
  on [imucc_awdb].[dbo].[Skill_Group].[SkillTargetID]=[imucc_awdb].[dbo].[Skill_Group_Member].[SkillGroupSkillTargetID]
  join Agent
  on [imucc_awdb].[dbo].[Skill_Group_Member].[AgentSkillTargetID]=[imucc_awdb].[dbo].[Agent].[SkillTargetID]
  order by [imucc_awdb].[dbo].[Call_Type].[EnterpriseName]

这是我目前的输出:

from collections import Counter
from itertools import chain

def add_sparse_vectors(lst1,lst2):
    dest = dict(Counter(lst1)+Counter(lst2))
    return dest

问题是我的作业具体要求输出:

>>> v1 = {0:1, 1:3, 2:1}
>>> v2 = {0:1}
>>> add_sparse_vectors(v1, v2)
{0: 2, 1: 3, 2: 1}

有没有人有解决方案从输出中的键值对中删除此特定空间?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

如果你真的想摆脱空格,你不需要实现自定义的dict类,就像@zondo建议的那样。赋值只要求表示没有空格。如果add_sparse_vectors返回字符串而不是字典,则无需更改dict的行为。

虽然我认为这不是特别优雅,但确实摆脱了空间。

def add_sparse_vectors(v1, v2):
    combined_dict = dict(Counter(lst1)+Counter(lst2))
    key_val_pairs = [str(k)+":"+str(v) for k,v in combined_dict.items()]
    output = "{" + ", ".join(key_val_pairs) + "}"
    return output

答案 1 :(得分:0)

你可以为字典编写自己的打印功能:

def print_dict(d):
    print('{'+', '.join('{}:{}'.format(k, v) for k, v in d.items())+'}')

这就是你的练习所要求的,但实际上我认为只要任务得到正确解决,他们就不应该关心一些空格......