查找字典中的所有常用值和子常用值
问题描述:
我是在python中使用dicitonaries的新功能。我手边有一个简单的问题。我有一个名为“输入”的口号。查找字典中的所有常用值和子常用值
Input={'VAR1':['K1','K2','K3','K4','K5...'],
'VAR2':['K3','K4',...],
'VAR3':['K2','K4','K5',...]}
词典“输入”中的键数量可能会有所不同。我渴望的输出是让所有常用值的列表,我想获得小组共同价值观作为字典
'K4' string common in all the lists (for all key values)
'K3' is only present in the list with key'VAR1' and 'VAR2'.
所以它帮助,如果我有相应的键
输出:
Common_Value=['K4',....]
Subcommon_Values1=['VAR1':['K3....'],'VAR2':['K3....']]
Subcommon_values2=['VAR1':['K5',...],'VAR3':['K5',....]]
任何人都可以帮助我吗?
谢谢
答
这将让你所有的共同的价值观:
sect = None
for k,v in Input.items():
if sect == None:
sect = set(v)
else:
sect = sect.intersection(set(v))
Common_Value = list(sect)
直到你清楚你的不同SubCommonValues结果和他们的实际结构(你似乎有列表中的键)之间的差异,不能确定这是你想不想要的:
all = None
for k,v in Input.items():
if all == None:
all = set(v)
else:
all = all.union(set(v))
diff = all.difference(sect)
uncom = { x:list() for x in diff }
for x in diff:
for k,v in Input.items():
if x in v:
uncom[x].append(k)
grps = {}
for k,v in uncom.items():
kv = tuple(v)
if kv not in grps:
grps[kv] = [k]
else:
grps[kv].append(k)
for k,v in grps.items():
print({ x:v for x in k })
答
,你可以这样做:
result=[i for i in Input if "K4" in Input[i]]
例子:
>>> Input={'VAR1':['K1','K2','K3','K4','K5'],'VAR2':['K3','K5'],'VAR3':['K2','K4','K5']}
>>> result=[i for i in Input if "K4" in Input[i]]
>>> result
['VAR1', 'VAR3']
编辑:
也许是这样的:
commonValues=['K4', 'K2']
result=[i for i in Input if set(commonValues).issubset(set(Input[i]))]
这将返回key
列表中你Input
dict
包含commonValues
列表的所有元素...
您能否证明*自己努力解决这个问题? –
你是如何确定什么是常见的和子公司的价值观,如果不是以编程的方式在概念上? –
我只是检查字符串'K4'是否存在于所有键的所有值列表 – ayaan