我有一本字典:避免重複插入到Python列表與理解
XY_dict = {1: [(12, 55),(13, 55)],
2: [(14, 55),(15, 57)],
3: [(14, 55),(15, 58)],
4: [(14, 55),(16, 55)]}
我想找出哪些鍵有值的元組,其中是唯一的(不存在於任何其他鍵的值)。從示例字典中,密鑰1是唯一的,因爲任何其他字典的密鑰中都不存在(12, 55)
和(13, 55)
。通過獲取具有共享值的密鑰列表,我可以稍後反轉結果並獲取唯一的密鑰。
我使用列表理解爲獲得鍵與共同的價值觀:
keys_shared_values = [k1 for k1,v1 in XY_dict.iteritems()
for k,v in XY_dict.iteritems()
for XY_pair in v
if XY_pair in v1 and k != k1 and k1 not in keys_shared_values]
其結果是,我越來越[2, 2, 3, 3, 4, 4]
但我希望重複不被插入(因爲我評估鍵值是否爲在結果列表中)。我可以通過運行list(set(shared_values))
來解決這個問題,但想知道我的代碼有什麼問題。
什麼是'key_shared_values',在'如果XY_pair在V1和k!=不key_shared_values' K1,K1的? – thefourtheye
@thefourtheye,感謝評論。我期望這是'[2,3,4]'。 –
你總是可以使用set的理解,比如'key_shared_values = list({k1 for k1,v1在XY_dict.iteritems()for k,v在XY_dict.iteritems()for XY_pair in v})'如果你還想使用理解。 – Geekfish