python 从字典中获取唯一值

新手上路,请多包涵

我想从我的字典中获取唯一值。

输入:

 {320: [167], 316: [0], 319: [167], 401: [167], 319: [168], 380: [167], 265: [166]}

期望的输出:

 [167,0,168,166]

我的代码:

 unique_values = sorted(set(pff_dict.itervalues()))

但我收到此错误: TypeError: unhashable type: 'list'

原文由 erija 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 711
2 个回答

目前尚不清楚为什么要将单项列表映射为值,但您可以使用列表理解来提取元素。

 foobar = {320: [167], 316: [0], 319: [167], 401: [167], 319: [168], 380: [167], 265: [166]}
print list(set([x[0] for x in foobar.values()]))

不过,如果您从直接映射到值开始,代码会简单得多。

 foobar = {320: 167, 316: 0, 319: 167, 401: 167, 319: 168, 380: 167, 265: 166}
print list(set(foobar.values()))

原文由 merlin2011 发布,翻译遵循 CC BY-SA 3.0 许可协议

列表不符合候选集内容的条件,因为它们是 不可散列 的。

您可以在调用 set itertoos.chain.from_iterable 将项目合并到一个容器中:

 from itertools import chain

unique_values = sorted(set(chain.from_iterable(pff_dict.itervalues())))

请注意,使用 itertools 不会违反您选择的 dict.itervalues 而不是 dict.values 因为解包/链接是 延迟 完成的。

原文由 Moses Koledoye 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题