这可能很简单,但我只是一个初学者。 如果我有这本词典;
ds = {"ABab": 6.25, "aBab": 6.25, "Abab": 6.25, "abab": 6.25, "ABab": 6.25, "aBab": 6.25, "Abab": 6.25, "abab": 6.25, "ABab": 6.25, "aBab": 6.25, "Abab": 6.25, "abab": 6.25, "ABab": 6.25, "aBab": 6.25, "Abab": 6.25, "abab": 6.25}
有没有办法创建这个?:
ds_new = {"ABab": 25, "aBab": 25, "Abab": 25, "abab": 25}
如果没有办法做到这一点,那么无论如何,谢谢你的注意。
答案 0 :(得分:2)
如前所述,您无法将此数据存储在字典中。您可以将其存储在其他形式中,例如元组列表。
ds = [("ABab", 6.25), ("aBab", 6.25), ("Abab", 6.25), ("abab", 6.25),
("ABab", 6.25), ("aBab", 6.25), ("Abab", 6.25), ("abab", 6.25),
("ABab", 6.25), ("aBab", 6.25), ("Abab", 6.25), ("abab", 6.25),
("ABab", 6.25), ("aBab", 6.25), ("Abab", 6.25), ("abab", 6.25)]
然后,您可以通过首先找到唯一键,然后将具有该键作为其第一个值的元组的值相加来制作总计字典。
keys = set(k for k, _ in ds)
totals = {unique_key: sum(v for k, v in ds if k==unique_key)
for unique_key in keys}
或另一种方式(可能更好)
totals = {}
for key, value in ds:
totals[key] = totals.get(key, 0) + value
答案 1 :(得分:1)
你不能在python中使用两次相同的密钥。字典中的每个键都必须是唯一的。查看documentation:
如果某个键出现多次,则该键的最后一个值将成为新词典中的相应值。
您的词典不是关于重复键的自动性,它将始终评估最后分配的键。
duplicate_keys = {"ABab": 6.25, "aBab": 6.25, "Abab": 6.25, "abab": 6.25, "ABab": 6.25, "aBab": 6.25, "Abab": 6.25, "abab": 6.25, "ABab": 6.25, "aBab": 6.25, "Abab": 6.25, "abab": 6.25, "ABab": 6.25, "aBab": 6.25, "Abab": 6.25, "abab": 6.25}
unique_keys = {"ABab": 6.25, "aBab": 6.25, "Abab": 6.25, "abab": 6.25}
duplicate_keys == unique_keys # True