d1 = ({'x':1, 'y':2}, {'x':3, 'y':4})
d2 = ({'x':1, 'y':2}, {'x':5, 'y':6}, {'x':1, 'y':6, 'z':7})
我有两个元组d1
和d2
。我知道元组是immutable
。所以我必须使用list附加另一个元组。有没有更好的解决方案。
接下来的问题是如何在按键上设置元组'x'。如果'x':钥匙中的1来两次则是正常的。
append_tuple = ({'x':1, 'y':2}, {'x':5, 'y':6}, {'x':1, 'y':6, 'z':7}, {'x':1, 'y':2}, {'x':3, 'y':4})
unique_tuple = ({'x':1, 'y':2}, {'x':3, 'y':4}, {'x':5, 'y':6})
注意: 我想从dict元组中删除重复元素,如果键值说'x'在两个dict中有保存值,那么那些是重复元素。
答案 0 :(得分:2)
没有更好的方法来扩展元组。我会说如果你经常这样做,你需要远离元组,或改变你的设计。
然而,听起来你使用了错误的收集类型。但您可以使用现有的SO回答How to uniqufy the tuple element?
答案 1 :(得分:2)
元组通常用于数据,其中项目的数量是固定的,每个地方都有自己的“含义”,因此排序,追加和删除重复项等内容在元组上永远不会很自然,并且不是设计的。如果您遇到元组,转换为列表,执行这些操作,那么转换回来是完全合理的。
如需追加,您可以:
d1 += (ITEM,)
并延伸,你只需:
d1 += d2
为了统一:
unique_list = []
for i1 in append_tuple:
if not any((k,v) in i2.items() for (k,v) in i1.items() for i2 in unique_list):
unique_list.append(i1)
unique_tuple = tuple(unique_list)
看起来似乎有一个更简洁/更优雅的解决方案,但是你要做的事情是相当具体的,对于像这样的东西,最好明确并在for循环中构建列表而不是试图强制它变得理解或类似。