【问题标题】:Python: merge a value of key if it exists more than one times within a same dictionaryPython:如果键的值在同一个字典中存在多次,则合并它
【发布时间】:2019-01-19 18:21:35
【问题描述】:

我在 python 中工作,如果它在字典中多次存在,我正在尝试获取键的值。我有多个字典的元组如下;

d= ({'object': 0.407, '2008': 0.325, 'concept': 0.449, 'c#': 0.222, '.net': 0.21, 'oriented': 0.41, '2012': 0.369, 'asp.net': 0.234, 'sql_server': 0.274}, {'microsoft_kinect_sdk_1.8': 1.0}, {'sql': 0.268, 'ado.net': 0.447, 'c#': 0.468, 'asp.net': 0.494, 'c++': 0.346, 'sql_server': 0.289, 'java': 0.248}, {'.net': 1.0}, {'sql_serverâ': 0.766, 'c#': 0.282, 'asp': 0.513, '.net': 0.267}, {'jquery': 0.201, 'vb': 0.49, 'prototype': 0.481, 'c#': 0.214, '.net': 0.203, 'css': 0.199, 'javascript': 0.357, 'html': 0.204, 'object-oriented': 0.376, 'java': 0.227}, {'javascript': 0.163, 'android': 0.216, 'java_ee': 0.38, 'liferay': 0.86, 'java': 0.207}, {'j2ee': 1.0}, {'javascript': 1.0}, {'android': 1.0}, {'ios': 1.0}, {'ruby': 0.432, 'rails': 0.424, 'asp.net': 0.254, 'css': 0.223, 'fphp': 0.654, 'javascript': 0.2, 'html': 0.228})

我想要这样的结果;

updated_d= {'ios': 1.0, 'concept': 0.449, 'sql_server': 0.766, '2012': 0.369, '.net':[0.21,1.0,0.267,0.203,0.254], 'microsoft_kinect_sdk_1.8': 1.0, 'sql': 0.268, 'css': 0.223, 'ado.net': 0.447, 'asp.net':[0.234,0.494.0.254], 'oriented': 0.41, 'c++': 0.346, 'html': 0.228, 'j2ee': 1.0, 'object-oriented': 0.376, 'jquery': 0.201, 'vb': 0.49, 'rails': 0.424, 'c#': 0.214, 'ruby': 0.432, 'android': 1.0, 'java_ee': 0.38, 'sql_server': 0.289, 'java': 0.207, 'object': 0.407, '2008': 0.325, 'asp': 0.513, 'fphp': 0.654, 'javascript': 0.2, 'liferay': 0.86, 'prototype': 0.481}

提前谢谢你。

【问题讨论】:

  • 你的意思是如果它在不同的字典中出现多次,你想合并它?
  • 你能证明你解决这个问题的尝试吗?

标签: python list dictionary key


【解决方案1】:

我想下面的代码会对你有所帮助:

aa = ({'object': 0.407, '2008': 0.325, 'concept': 0.449, 'c#': 0.222, '.net': 0.21, 'oriented': 0.41, '2012': 0.369, 'asp.net': 0.234, 'sql_server': 0.274}, {'microsoft_kinect_sdk_1.8': 1.0}, {'sql': 0.268, 'ado.net': 0.447, 'c#': 0.468, 'asp.net': 0.494, 'c++': 0.346, 'sql_server': 0.289, 'java': 0.248}, {'.net': 1.0}, {'sql_serverâ': 0.766, 'c#': 0.282, 'asp': 0.513, '.net': 0.267}, {'jquery': 0.201, 'vb': 0.49, 'prototype': 0.481, 'c#': 0.214, '.net': 0.203, 'css': 0.199, 'javascript': 0.357, 'html': 0.204, 'object-oriented': 0.376, 'java': 0.227}, {'javascript': 0.163, 'android': 0.216, 'java_ee': 0.38, 'liferay': 0.86, 'java': 0.207}, {'j2ee': 1.0}, {'javascript': 1.0}, {'android': 1.0}, {'ios': 1.0}, {'ruby': 0.432, 'rails': 0.424, 'asp.net': 0.254, 'css': 0.223, 'fphp': 0.654, 'javascript': 0.2, 'html': 0.228})

bb = {}
for i in aa:
    for k, v in i.items():
        bb.setdefault(k, []).append(v)

print (bb)


#output
{'object': [0.407], '2008': [0.325], 'concept': [0.449], 'c#': [0.222, 0.468, 0.282, 0.214], '.net': [0.21, 1.0, 0.267, 0.203], 'oriented': [0.41], '2012': [0.369], 'asp.net': [0.234, 0.494, 0.254], 'sql_server': [0.274, 0.289], 'microsoft_kinect_sdk_1.8': [1.0], 'sql': [0.268], 'ado.net': [0.447], 'c++': [0.346], 'java': [0.248, 0.227, 0.207], 'sql_serverâ': [0.766], 'asp': [0.513], 'jquery': [0.201], 'vb': [0.49], 'prototype': [0.481], 'css': [0.199, 0.223], 'javascript': [0.357, 0.163, 1.0, 0.2], 'html': [0.204, 0.228], 'object-oriented': [0.376], 'android': [0.216, 1.0], 'java_ee': [0.38], 'liferay': [0.86], 'j2ee': [1.0], 'ios': [1.0], 'ruby': [0.432], 'rails': [0.424], 'fphp': [0.654]}

如果您不想要单值元素的列表对象,例如object: [0.407] 则可以将其转换为字符串进行进一步处理。

【讨论】:

  • 谢谢,这段代码给出了我想要的确切输出。
猜你喜欢
  • 2020-05-03
  • 2021-09-03
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
  • 2017-07-06
  • 2021-04-30
  • 1970-01-01
相关资源
最近更新 更多