我想在我的python词典中应用以下set操作,在python 2.6.9中
union = dict(set.union(*(set(service_configs[d].iteritems())
for d in service_configs if service_configs[d]))).viewitems()
intersection = dict(set.intersection(*(set(service_configs[d].iteritems())
for d in service_configs if service_configs[d]))).viewitems()
column_names = dict(union - intersection).keys()
上面的代码工作在python 2.7+但是获取'dict'对象没有属性'viewitems'与之前的版本,似乎不支持viewitems()。 我不知道如何处理它使python版本独立。
答案 0 :(得分:2)
dict.viewitems()
为字典中的所有(key, value)
对创建一个类似实时集的对象。
由于你想要做的只是在这里创建一个交集,你可以使用dict.iteritems()
序列中的集合来代替:
union = dict(set.union(*(set(service_configs[d].iteritems())
for d in service_configs if service_configs[d])))
intersection = dict(set.intersection(*(set(service_configs[d].iteritems())
for d in service_configs if service_configs[d])))
column_names = dict(set(union.iteritems()) - set(intersection.iteritems())).keys()
由于你只拿钥匙,上面的说法仍然是一种非常冗长的说法:
union = set.union(*(d
for d in service_configs.itervalues() if d))
intersection = set.intersection(*(d
for d in service_configs.itervalues() if d))
column_names = list(union - intersection)