我有两个词典我喜欢根据某些标准来比较他们的dict_values,比如说他们各自的dict_values上的索引0和2的值必须相同才算得相等。
此代码有效:
a = dict()
b = dict()
a[1,3] = 5, 6, 7
b[1,4] = 5, 9, 7
a_tuple = (list(a.values()))[0]
b_tuple = (list(b.values()))[0]
if a_tuple[0] == b_tuple[0] and a_tuple[2] == b_tuple[2]:
print('Equal')
有更短/更有效的方法吗?。
提前致谢!
约翰
答案 0 :(得分:1)
我不确定这是否更好,但以下情况应该有效:
import operator
import sys
py3k = sys.version_info[0] > 2
a = dict()
b = dict()
a[1,3] = 5, 6, 7
b[1,4] = 5, 9, 7
if(py3k):
a_tuple = next(iter(a.values()))
b_tuple = next(iter(b.values()))
else:
a_tuple = a.values()[0]
b_tuple = b.values()[0]
cmp_key=operator.itemgetter(0,2)
if cmp_key(a_tuple) == cmp_key(b_tuple):
print('Equal')
比较更干净,如果使用python 3,我使用next
和iter
来获取字典中的第一个元组。
当然,更好的解决方案是更改数据结构,这样您就不会经常处理只有一个项目的字典。
答案 1 :(得分:0)
没有太大的区别,只有我发现的优化 a_tuple = a.values()[0] b_tuple = b.values()[0]
实际上dict.values只给你元组。你正在将它列入列表,然后再次转向元组