python - 比较 Python 字典中保存的集合

标签 python dictionary set

我有以下内容,它需要多行用户输入(例如“English Bob Luke”)将一个集合存储在字典中,关于人们说哪种语言。我使用字典来保存多行输入来创建多个集合,但现在我需要比较集合之间的差异,看看某人是否只说一种语言。

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!')

最佳答案

我会颠倒字典中键和值的顺序,因为它使问题变得更容易。因此,不必为每种语言存储使用该语言的不同用户,只需创建该人使用的所有语言的每个用户配置文件即可:

from collections import defaultdict

user_langs = defaultdict(list)

while True:
    info = map(lambda s: s.strip(), raw_input('Line: ').split())
    if info:
        for user in info[1:]:
            user_langs[user].append(info[0])
    else:
        break

for user in user_langs:
    if len(user_langs[user]) < 2:
        print("{} is monolingual.".format(user))

关于python - 比较 Python 字典中保存的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26884031/

相关文章:

c# - 将代码添加到 C# 获取/设置属性而不需要支持字段?

python - python 2.7 中的网络带宽测试或速度测试

python - 将抓取的结果集保存到 CSV 文件中

python - 如何使用 urllib 跟踪重定向?

Python 在 dict 中使用 %s 来调用 value

php - php中是否有任何语法或命令来检查一个数字是否在一组数字中?

python 3 : Change one character of item in list

返回索引 0 处的值的 Python 函数?

java - 如何在Java中制作动态二维数组?

python - 检查输入中是否有字母