dic = {10: False,
11: 8,
12: 7,
7: False,
8: 6,
9: 6,
4: False,
5: 6,
6: 7,
1: False,
2: 13,
3: 5}
想要找到dic里有相同值(不包含False)的键,
范例中找到的应该是:
key:8、9、5,因为他们的值都是6;
key:12、6,因为他们的值都是7。
字典的键都是固定的1-12,值不是固定的,该怎么操作呢?
代码如下:
dic = {10: False,
11: 8,
12: 7,
7: False,
8: 6,
9: 6,
4: False,
5: 6,
6: 7,
1: False,
2: 13,
3: 5}
result = []
_dict = {}
for key, value in dic.items():
if not value:
continue
if value not in _dict.keys():
_dict[value] = []
_dict[value].append(key)
for key, value in _dict.items():
if len(value) > 1:
_str = ",".join([str(x) for x in value])
print("dic里有相同值(不包含False)的值{key}的键为:{values}".format(key=key, values=_str))
输出为
dic里有相同值(不包含False)的值7的键为:12,6
dic里有相同值(不包含False)的值6的键为:8,9,5
from typing import Dict, List
dic = {10: False,
11: 8,
12: 7,
7: False,
8: 6,
9: 6,
4: False,
5: 6,
6: 7,
1: False,
2: 13,
3: 5}
result:Dict[int, List[int]] = {}
# 根据值分类
for key, value in dic.items():
if not value:
continue
if value not in result.keys():
result[value] = []
result[value].append(key)
# 获取分类出来的字典的长度大于1的
for key, value in result.items():
if len(value) > 1:
print("有相同值(不包含False)的值{key}的键为:{values}".format(key=key, values=value))
for i in set(dic.values()):
tmp = []
for k,v in dic.items():
if v==i and v:
tmp.append(str(k))
if len(tmp)>1:
print(i,':',' '.join(tmp))
'''--result:
6 : 8 9 5
7 : 12 6
'''
给一种通过推导式实现的方式,仅供参考:
dic = {10: False, 11: 8, 12: 7, 7: False, 8: 6, 9: 6, 4: False, 5: 6, 6: 7, 1: False, 2: 13, 3: 5}
d = {v:[k for k in dic.keys() if dic[k]==v] for v in [v for v in set(dic.values()) if v!=False] if len([k for k in dic.keys() if dic[k]==v])>1}
print(d)