如何根据常用关键字设置两个词典的格式



两个字典d1d2,可以包含same keys with same valuessame keys with different valuesdifferent keys。需要考虑在d1和d2中使用类似的键。如果d1的类似密钥的值小于d2,则捕获这样的key:value对。而且,另一个捕获具有密钥:d1的值,而d1和d2中的公共密钥的值较小。类似地,对于d2,在d1和d2中没有更高的公共密钥值。能够做到这一点,但我想我正在使用许多词典来处理这一点。有什么更好的方法可以实现吗?可以进行任何优化吗?

代码:

d1 = {"a": 5, "b": 6, "c": 7, "d": 8, "e": 9, "f": 2}
d2 = {"a": 6, "b": 4, "c": 8, "d": 5, "f": 2}
less_values_of_d1 = {}
without_lesser_values_of_a_key_of_d1 = {}
without_higher_values_of_a_key_of_d2 = {}
for i in d1:
if i in d2:
if d1[i] < d2[i]:
less_values_of_d1[i] = d1[i]
else:
without_lesser_values_of_a_key_of_d1[i] = d1[i]
without_higher_values_of_a_key_of_d2[i] = d2[i]
else:
without_lesser_values_of_a_key_of_d1[i] = d1[i]

print("d1:", d1)
print("d2:", d2)
print("less_values_of_d1:", less_values_of_d1)
print("without_lesser_values_of_a_key_of_d1:", without_lesser_values_of_a_key_of_d1)
print("without_higher_values_of_a_key_of_d2:", without_higher_values_of_a_key_of_d2)

输出:

d1: {'a': 5, 'b': 6, 'c': 7, 'd': 8, 'e': 9, 'f': 2}
d2: {'a': 6, 'b': 4, 'c': 8, 'd': 5, 'f': 2}
less_values_of_d1: {'a': 5, 'c': 7}
without_lesser_values_of_a_key_of_d1: {'b': 6, 'd': 8, 'e': 9, 'f': 2}
without_higher_values_of_a_key_of_d2: {'b': 4, 'd': 5, 'f': 2}

你可以做一些字典理解。这里有一个例子。

less_values_of_d1 = {k:d1[k] for k in set(d1.keys()).
intersection(set(d2.keys()))
if d1[k]<d2[k]}

最新更新