我正在练习面试问题并遇到了这个问题,你能帮我解决一下吗?
您有2个无限的数据流。 流中的每个条目都包含“key”属性和“value”属性,两者都是整数。 进入键正在增加。 设计一种算法来从两个流中读取每个条目并将其写入4个桶中的一个: 1)密钥仅出现在流1中 2)密钥仅出现在流2中 3)密钥出现在两个流中,并且值不同 4)密钥出现在两个流中,并且值是相同的。 我的方法(只是一个模糊的想法)
Stream1 = {}
Stream2 = {}
list1 = []#bucket1
list2 = []#bucket2
list3 = []#bucket3
list4 = []#bucket4
key1, value1 = Stream1.read()
key2, value2 = Stream2.read()
while(key1 != null or key2 != null):
if(key1 == key2 and value1 == value2):
list4.append(key1)
elif(key1 == key2 and value1 != value2):
list3.append(key1)
elif(key1 > key2):
list2.append(key2)
key2 = stream2.read()
else:
list1.append(key1)
key1 = stream1.read()
key2 = stream2.read()
答案 0 :(得分:0)
不可能阅读整个问题并纠正它,但是,我仍然可以指出一些语法缺陷。
Python中的逻辑或操作是'或'不是' ||'。同样,'和'不是'&&'
最后,Stream1是一个没有read()
的字典。请详细说明你想要达到的目标。
试试这段代码:
#Pre-filled dictionaries with data in (key, value) format
Stream1 = {}
Stream2 = {}
list1 = []#bucket1
list2 = []#bucket2
list3 = []#bucket3
list4 = []#bucket4
for (key,val) in Stream1.items():
if not key in Stream2:
list1.append(key)
else:
if Stream1[key] == Stream2[key]:
list4.append(key)
else:
list3.append(key)
del Stream2[key]
for key in Stream2:
list2.append(key)
如果这有用,请接受答案。