python字典使用法 统计具有相同value的key
2017-08-05 09:25
3127 查看
在进行标签传播算法时,需要统计具有相同标签的节点,为此尝试了以下几种字典使用法:
若字典m = {'a':'123', 'b':'234', 'c':'123', 'd':'245', 'e':'234'} 想将字典m的相同的value的key合并,为此新建一个字典m2={}
>>> m2={}
>>> for k, v in m.items():
if m2.has_key(v):
m2[v].append(k)
else:
m2[v] = []
>>> m2
{'234': ['e'], '245': [], '123': ['c']} 结果不是我想要的!
>>> m2={'123':[],'234':[],'245':[]}
>>> for k, v in m.items():
if m2.has_key(v):
m2[v].append(k)
else:
m2[v] = []
>>> m2
{'234': ['b', 'e'], '245': ['d'], '123': ['a', 'c']}结果对了,但是字典创建过于繁琐
>>> q=['234','123','245']
>>>
m2=dict.fromkeys(q,[])
>>> m2
{'234': [], '245': [], '123': []}
>>> for k, v in m.items():
if m2.has_key(v):
m2[v].append(k)
else:
m2[v] = []
>>> m2
{'234': ['a', 'c', 'b', 'e', 'd'], '245': ['a', 'c', 'b', 'e', 'd'], '123': ['a', 'c', 'b', 'e', 'd']}
m2中每个键的值都追加了?为什么呢?还是不明白(折腾了半天。。。),最终选择了:
>>> q=('234','123','245')
>>> for i in range(3):
m2.update({q[i]:[]})
>>> m2
{'245': [], '234': [], '123': []}
>>> for k, v in m.items():
if m2.has_key(v):
m2[v].append(k)
else:
m2[v] = []
>>> m2
{'245': ['d'], '234': ['b', 'e'], '123': ['a', 'c']}
终于ok了, 但是第三种方法为什么会出现全部追加?它与第4种方法有你们本质区别吗?依旧不明白。。。
转载本文请联系原作者获取授权,同时请注明本文来自吴小兰科学网博客。
链接地址:http://blog.sciencenet.cn/blog-668239-730755.html
若字典m = {'a':'123', 'b':'234', 'c':'123', 'd':'245', 'e':'234'} 想将字典m的相同的value的key合并,为此新建一个字典m2={}
>>> m2={}
>>> for k, v in m.items():
if m2.has_key(v):
m2[v].append(k)
else:
m2[v] = []
>>> m2
{'234': ['e'], '245': [], '123': ['c']} 结果不是我想要的!
>>> m2={'123':[],'234':[],'245':[]}
>>> for k, v in m.items():
if m2.has_key(v):
m2[v].append(k)
else:
m2[v] = []
>>> m2
{'234': ['b', 'e'], '245': ['d'], '123': ['a', 'c']}结果对了,但是字典创建过于繁琐
>>> q=['234','123','245']
>>>
m2=dict.fromkeys(q,[])
>>> m2
{'234': [], '245': [], '123': []}
>>> for k, v in m.items():
if m2.has_key(v):
m2[v].append(k)
else:
m2[v] = []
>>> m2
{'234': ['a', 'c', 'b', 'e', 'd'], '245': ['a', 'c', 'b', 'e', 'd'], '123': ['a', 'c', 'b', 'e', 'd']}
m2中每个键的值都追加了?为什么呢?还是不明白(折腾了半天。。。),最终选择了:
>>> q=('234','123','245')
>>> for i in range(3):
m2.update({q[i]:[]})
>>> m2
{'245': [], '234': [], '123': []}
>>> for k, v in m.items():
if m2.has_key(v):
m2[v].append(k)
else:
m2[v] = []
>>> m2
{'245': ['d'], '234': ['b', 'e'], '123': ['a', 'c']}
终于ok了, 但是第三种方法为什么会出现全部追加?它与第4种方法有你们本质区别吗?依旧不明白。。。
转载本文请联系原作者获取授权,同时请注明本文来自吴小兰科学网博客。
链接地址:http://blog.sciencenet.cn/blog-668239-730755.html
相关文章推荐
- Python中使用Counter进行字典创建以及key数量统计的方法
- Python中使用Counter进行字典创建以及key数量统计
- python 合并字典,相同 key 的 value 如何相加?
- python 字典的key与value进行交换
- Python字典使用--词频统计的GUI实现
- Python 把字典的key和value的值取出来,按照顺序存入到list中
- Python 对文本先按词频统计,若相同按字典排序,后取TopN
- python中使用自定义类实例作为字典的key
- python 字典操作提取key,value
- Python从单元素字典中获取key和value
- System.ArgumentException: 已添加了具有相同键的项。(An item with the same key has already been added) 在 System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) 在 System.Web.Mvc.Js
- python dict 相同key 合并value
- python 字典 key 和value 互换
- python - 字典按key或者value进行排序(sorted)
- python中获取字典的key列表和value列表
- python小技巧--通过字典的值(value)求键(key)
- Python 对字典元素的赋值 (字典key和value均为组合类型)
- python——反转字典的两种方法(字典的key和value对换)
- 【Python】利用setdefault函数实现dict的转置(key与value对互换),统计value出现的次数
- python字典分别按照key和value升序或者降序排列--以给定一个含有重复元素的数组list,按照其出现次数大小降序输出