【发布时间】:2014-11-12 09:57:41
【问题描述】:
我有以下内容,它需要多行用户输入,例如“英语 Bob Luke”,以将一个集合存储在字典中,关于哪些人说哪种语言。我使用 Dictionary 来保存多行输入以创建多个 Set,但我现在需要比较 Set 之间的差异,看看是否有人只会说一种语言。
languages = {}
while True:
info = input('Line: ').split()
if info != []:
languages[info[0]] = set(info[1:])
else:
break
我可以使用下面的代码打印集合,但它似乎并没有真正让我到任何地方!
for tongue in languages:
print(set(languages[tongue]))
完全卡住了 - 任何帮助将不胜感激!
更新
这里是我想要实现的示例:
Line: English Tim Nicky James John Ben
Line: German Nicky Tim Tara
Line: Mandarin Tim John
Line:
James is monolingual.
Tara is monolingual.
Ben is monolingual.
解决方案
完全重新采用我的方法并放弃了字典! :
english = input("Line: ").split()
en_speakers = set(english[1:len(english)])
multi_speakers = set()
while True:
language = input("Line: ").split()
lan_speakers = language[1:len(language)]
if language == []:
break
else:
multi_speakers |= set(lan_speakers)
monolinguals = en_speakers.difference(multi_speakers)
for person in monolinguals:
print(person, 'is monolingual.')
if multi_speakers == en_speakers:
print ('Everyone is multilingual!')
【问题讨论】:
-
你遇到了什么错误?
-
上面的代码没有错误,我只是不确定要添加什么来比较字典中的集合之间的差异。如果 Luke 只出现在一个 Set 中,我需要能够打印诸如“Luke 是单语”之类的内容。
-
您不应在问题正文中添加解决方案作为以后的编辑。相反,将其添加为真正的解决方案并将其标记为答案。但是,您的解决方案不正确,因为它错过了您的示例中的
Tara。那是因为你忽略了不会说英语的人,只取英语集的差异。 -
公平喊叫。新一轮在这里 - 只是认为靠近顶部的解决方案可以为未来的游客节省拖网!练习表明我们应该假设每个人都会说英语,因此我的策略是将所有内容与第一行输入进行比较。一定是示例程序文本中的错误。干杯。
标签: python dictionary set