gpt4 book ai didi

python - 如何按值唯一化字典?

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:03 25 4
gpt4 key购买 nike

我想在字典中区分重复值。它看起来像这样:

d = {
"a":1,
"b":2,
"c":2,
"d":3,
"e":4,
"f":5,
"g":1,
"h":2,
"i":2,
"j":1,
"k":1}

这是我做的:

# sort and unique the dict values
obj = d.values()
K = []
K = sorted(list(zip(*[(x,K.append(x)) for x in obj if not x in K])[0]

V=[]
for v1 in L:
V.append([k for k, v in obj.iteritems() if v == v1][0])
d_out = dict(zip(K, V))

1.那么,K、V 的顺序是否正确?另外,它可能有点复杂,谁能给出一个简单的解决方案来根据它的值来唯一化字典?

2。下面可以更简单吗?

for v1 in L:  
V.append([k for k, v in obj.iteritems() if v == v1][0])

这不适用于我的测试:

[V.append([k for k, v in obj.iteritems() if v == v1][0]) for v1 in L] 

3。我意识到我可以使用交换键值来实现这一点(通过它的值唯一一个字典),但是我不知道当交换导致键冲突时如何选择键:

dict((value, key) for key, value in my_dict.iteritems())  

我知道如果再次交换值将是唯一的,但是,这只会在发生键冲突时覆盖键,没有机会进行选择。我感到困惑,为什么这没有给出关键冲突错误?我可以做一些事情来选择丑陋的方式旁边的 key ,以便稍后覆盖新字典的 key 吗?

4.我搜索并发现 python dict 的一些“无” 值得到了很好的讨论,任何人都可以给我一个示例它的用途以及它对使用 python dict 有什么影响?

最佳答案

  1. 字典不是序列。没有顺序。

  2. 您需要一种更简单的整体方法。

  3. 字典不会给出“键冲突错误”。它假定您要用新值覆盖旧值。

  4. 我不明白你在这里问什么。

下面的解决方案是一种从字典中删除重复值的更直接的方法。调整排序或插入循环以控制哪些键应出现在最终字典中。

d = {
"a":1,
"b":2,
"c":2,
"d":3,
"e":4,
"f":5,
"g":1,
"h":2,
"i":2,
"j":1,
"k":1}

# Extract the dictionary into a list of (key, value) tuples.
t = [(k, d[k]) for k in d]

# Sort the list -- by default it will sort by the key since it is
# first in the tuple.
t.sort()

# Reset the dictionary so it is ready to hold the new dataset.
d = {}

# Load key-values into the dictionary. Only the first value will be
# stored.
for k, v in t:
if v in d.values():
continue
d[k] = v

print d

关于python - 如何按值唯一化字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3253716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com