我正在努力解决 Python 中的一个小问题(我的程序现在是 3.2.3 版)。
我有一个看起来像这样的字典(这只是一个例子,实际上取自这里的另一篇文章):
[
{"abc": "movies"},
{"abc": "sports"},
{"abc": "music"},
{"xyz": "music"},
{"pqr": "music"},
{"pqr": "movies"},
{"pqr": "sports"},
{"pqr": "news"},
{"pqr": "sports"},
]
我想简单地 print() 一个唯一值列表,消除重复。在此列表的末尾,我想打印字典中唯一值的数量:
movies
sports
music
news
4
感谢任何帮助。我发现这里还有一些其他帖子有些相关,但我对 Python 的了解还不够,无法将其应用于这个特定问题。
最佳答案
在此处使用 set
,因为它们仅包含唯一项。
>>> lis = [{"abc":"movies"}, {"abc": "sports"}, {"abc": "music"}, {"xyz": "music"}, {"pqr":"music"}, {"pqr":"movies"},{"pqr":"sports"}, {"pqr":"news"}, {"pqr":"sports"}]
>>> s = set( val for dic in lis for val in dic.values())
>>> s
set(['movies', 'news', 'music', 'sports'])
循环这个集合以获得预期的输出:
for x in s:
print x
print len(s) #print the length of set after the for-loop
...
movies
news
music
sports
4
这一行s = set(val for dic in lis for val in dic.values())
大致相当于:
s = set()
for dic in lis:
for val in dic.values():
s.add(val)
关于python - 打印 Python 字典中的所有唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218139/