Python 将多个字典与特定值进行比较
我有四本长度相近的词典 我想:Python 将多个字典与特定值进行比较,python,dictionary,Python,Dictionary,我有四本长度相近的词典 我想: 获取四个键之间匹配的键 迭代每个字典中的某个值,稍后我将对其进行比较并执行一些算术运算 我已经使用嵌套循环(四个循环)实现了这一点,但这看起来根本没有效率。我想让这段代码更加高效和优雅 我希望在不执行嵌套循环的情况下执行此操作: d1 = {1:18:[['28','Y','N'],['108','A','M'],...] d2,d3 and d4 are the same thing expect different values but some will
d1 = {1:18:[['28','Y','N'],['108','A','M'],...]
d2,d3 and d4 are the same thing expect different values but some will have same keys
for k, v in di1.iteritems():
for v1 in v:
for k2,v2 in di2.iteritems():
for va2 in v2:
if k == k2:
for k3,v3 in di3.iteritems():
for va3 in v3:
if k2 == k3:
for k4,v4 in di4.iteritems():
for va4 in v4:
if k3==k4 and k==k4 and k==k3:
# do some arithmetics on dictionary's values for all four dictionaries
事先非常感谢。如果他们有相同的密钥,那么
di1.keys()==di2.keys()==di3.keys()==di4.keys()
如果它们并非都有键,则使用中的,构建键的并集,并检查每个键都有哪个dict:
keys = set(di1.keys()) | set(di2.keys()) | set(di3.keys()) | set(di4.keys())
for k in keys:
if k in di1:
# di1 has the key
if k in di2:
# di2 has the key
if k in di1 and k in di2:
# do something with di1[k] and di2[k]
# ...
1) 我假设“获取四个字典中匹配的键”意味着您希望找到所有四个字典中都存在的键。实现这一点的一种方法是取四个关键点的交点
2) 迭代公共键并“对所有四个字典的字典值进行一些算术运算”:
如果希望避免嵌套循环,也可以使用列表理解,例如生成(键、元组列表)对的列表并在以后对其进行操作:
common_keys_vals = [(key, [dict[key] for dict in [d1, d2, d3, d4]])
for key in common_keys]
1个字母的变量名会让代码变得混乱。d1和di1一样吗?我不明白这一点:''迭代每个字典中的某个值,稍后我将进行比较,并执行一些算术运算''?请举个例子,这是什么意思?
common_keys = set(d1.keys()) & set(d2.keys()) & set(d3.keys()) & set(d4.keys())
for key in common_keys:
for dict in [d1, d2, d3, d4]:
# do something with dict[key]...
common_keys_vals = [(key, [dict[key] for dict in [d1, d2, d3, d4]])
for key in common_keys]