提问者:小点点

Python:在值是列表的地方添加字典值


我有一本像这样的字典:

{a: ['1', '2'], b: ['3', '4']}

如何实现代码,使字典中的值被添加并按递减值顺序排序,如下所示:

{b : 7, a : 3}

在高级感谢!


共3个答案

匿名用户

这可以通过以下方式实现:

d = {'a': ['1', '2'], 'b': ['3', '4']}
d = {value: sum(int(j) for j in key) for value, key in d.items()}
d = sorted(d.items(), key = lambda x:d[x[0]], reverse = True)
d = {key: value for key, value in d}

希望这能帮上忙。

谢谢,

伊塞

匿名用户

这里有一个解决方案,我认为可以解释一些可能会让你绊倒的错误。

testDictionary = {"a": [1, 2], "b": [3, 4]}

def sumDictionaryParts(dictionary):
    for variable in dictionary:
        sumOfValues = sum(dictionary[variable])
        dictionary[variable] = sumOfValues
    return dictionary

print(sumDictionaryParts(testDictionary))

我认为您的意思是使字典中每对的键都是带“”的字符串,并将值保留为整数,这样您就不必担心类型了。 它通常也有助于当你有像这样的一般问题时,制作一个子例程,然后你可以用其他输入测试它,并确保它工作。

如果您正在寻找一个学习python词典的好网站,我几年前就用过这个网站,它对我很好:)

https://www.w3schools.com/python/python_dictionaries.asp

继续编码!

匿名用户

如果你需要一个

sample_dict = {"a": ["1", "2"], "b": ["3", "4"], "c": ["5"]}

sample_dict = {key: sum(map(lambda x: int(x), sample_dict[key])) for key in sample_dict}

sample_dict = {
    key: sample_dict[key]
    for key in sorted(sample_dict, key=sample_dict.get, reverse=True)
}

print(sample_dict)

输出:

{'b': 7, 'c': 5, 'a': 3}