Python从具有列表作为值的哈希图中选择一个随机值?

IS9*_*S92 1 python lambda

所以我有一个defaultdict(list) hashmap,潜在的术语

potential_terms={9: ['leather'], 10: ['type', 'polyester'], 13:['hello','bye']}
Run Code Online (Sandbox Code Playgroud)

我想要输出的是具有最低键的2个值(单词),所以'leather'肯定是第一个输出,但是'type''polyester'都有k=10,当键相同时,我想要随机选择“类型”“聚酯”

我所做的是:

out=[v for k,v in sorted(potential_terms.items(), key=lambda x:(x[0],random.choice(x[1])))][:2]
Run Code Online (Sandbox Code Playgroud)

但是当我打印时out我得到:

[['皮革'],['类型','聚酯纤维']]

我的猜测当然是 lambda 函数的第二部分:random.choice(x[1])。关于如何通过输出“类型”“聚酯”使其按预期工作有什么想法吗?

谢谢

Ada*_*Er8 5

编辑:请参阅Karl 的回答和评论,了解为什么此解决方案对于 OP 的问题不正确。我把它留在这里是因为它确实证明了 OP 最初出错的地方。

key=不转换数据本身,它只告诉sorted如何排序,

您想在选择它进行理解时应用choiceon ,如下所示:v

out=[random.choice(v) for k,v in sorted(potential_terms.items())[:2]]
Run Code Online (Sandbox Code Playgroud)

(我还将 [:2] 移到了里面,以缩短理解之前的列表)

输出:

['leather', 'type']
Run Code Online (Sandbox Code Playgroud)

或者

['leather', 'polyester']
Run Code Online (Sandbox Code Playgroud)