我创建了一个脚本,在其中比较两组,其中一组称为:
old_sets = {'Hello', 'Stack', 'overflow', }
new_sets = {'Hello', 'Stack', 'overflow', 'Yay' }
我对脚本的想法是,每当new_sets大于old_sets时,就返回该值。
所以我试图创建类似这样的东西:
changed_grades = [old_count in old_sets ) if len(old_sets) < len(new_sets)]
return changed_grades
但是我完全理解错了,我在这里...:(
我的问题是:如何使它在new_dict大于old_sets时返回并忽略old_dict是否大于new_sets? -意思是集内的值与长度无关,这无关紧要。等等:
old_sets = {'Hello', 'Stack', 'overflow', } - Len 3
new_sets = {'Hello', 'Stack', 'overflow', 'Yay' } - Len 4 <-- Print out becuase it has bigger set than old_set
编辑:我的整个功能:
def getChanges(old_sets, new_sets):
longest_set_length = max(len(old_sets), len(new_sets))
new_items = new_sets - old_sets
return new_list
# -------------------------------------------------------------------------
def check_difference():
old_sets = {'Hello', 'Stack', 'overflow'}
while True:
new_sets = {'Hello', 'Stack', 'overflow', 'Yay'}
grab_changes = getChanges(old_sets, new_sets)
if grab_changes....: #Something
#if there is changes where new_values
else:
randomtime = random.randint(10, 20)
print("No new changes")
old_sets = new_sets
time.sleep(randomtime)
因此,正如您所看到的,我想做什么(也许甚至没有必要),但是我想调用getChanges(old_sets, new_sets)
,该函数在其中检查new_sets是否大于old_sets并返回true。如果没有,那么我们只需点击
else:
randomtime = random.randint(10, 20)
print("No new changes")
old_sets = new_sets
time.sleep(randomtime)
答案 0 :(得分:1)
您可以将max
与相应的“键”功能配合使用:
return max(old_set, new_set, key=len)
通常,如果a > b
是a
的超集,则集b
和a
的{{1}}为true。将b
用于“键”功能会将比较更改为len
。
答案 1 :(得分:0)
如果您只关心集合中元素的数量,则可以简单地将它们的长度与
进行比较。if len(old_sets) < len(new_sets):
print(new_sets)
答案 2 :(得分:0)
如果您想知道以length
表示的最大集合的长度,则可以:
longest_set_length = max(len(old_set), len(new_set))
此外,既然您知道自己拥有套,则可以使用套操作来简化生活。
例如,如果您想知道哪些项目已添加到 new_set ,则可以执行以下操作:
new_items = new_set - old_set
您需要定义一个函数get_number_of_new_items(old_set, new_set)
。
如我所见,您有两种选择:
def number_of_new_items(old_set, new_set):
return max(len(new_set) - len(old_set), 0)
或
def number_of_new_items(old_set, new_set):
return len(new_set - new_set)
假设您有:
old_sets = {'Hello', 'Stack', 'overflow', }
new_sets = {'My', 'name', 'is'}
第一个实现会说number_of_new_items == 0
,第二个实现 会说number_of_new_items == 3
。因此,这是您的选择。
在循环中使用该函数:
def check_difference():
old_sets = {'Hello', 'Stack', 'overflow'}
while True:
new_sets = {'Hello', 'Stack', 'overflow', 'Yay'}
n_new_items = number_of_new_items(old_sets, new_sets)
if n_new_items > 0: #Something
#if there is changes where new_values
else:
randomtime = random.randint(10, 20)
print("No new changes")
old_sets = new_sets
time.sleep(randomtime)