如何在python中解决基于字典的算法

时间:2018-01-31 04:31:12

标签: python-3.x

我正在练习面试问题并遇到了这个问题,你能帮我解决一下吗?

您有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()

1 个答案:

答案 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)

如果这有用,请接受答案。