Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何相应地添加字符串列表元组字典的第一个索引的值?Python 3x_Python_Key_Tuples_Dictionary - Fatal编程技术网

如何相应地添加字符串列表元组字典的第一个索引的值?Python 3x

如何相应地添加字符串列表元组字典的第一个索引的值?Python 3x,python,key,tuples,dictionary,Python,Key,Tuples,Dictionary,我一直在思考如何正确地表述这个问题,以下是: 如果我们有以下价值观呢: {('A','B','C','D'):3, ('A','C','B','D'):2, ('B','D','C','A'):4, ('D','C','B','A'):3, ('C','B','A','D'):1, ('C','D','A','B'):1} 当我们总结排名第一的值时:[5,4,2,3](5人选择A第一,4人选择B第一,以此类推,如A=5,B=4,C=2,D=3) 任何字母表的最大值都是5,这不是多数(5/14

我一直在思考如何正确地表述这个问题,以下是:

如果我们有以下价值观呢:

{('A','B','C','D'):3, 
('A','C','B','D'):2,
('B','D','C','A'):4,
('D','C','B','A'):3,
('C','B','A','D'):1,
('C','D','A','B'):1}
当我们总结排名第一的值时:[5,4,2,3](5人选择A第一,4人选择B第一,以此类推,如A=5,B=4,C=2,D=3)

任何字母表的最大值都是5,这不是多数(5/14小于一半),其中14是总值的总和

所以我们用最少的第一名来删除字母表。在这种情况下是C

我想返回一个字典,其中
{'a':5,'B':4,'C':2,'D':3}
而不导入任何内容

这是我的工作:

def popular(letter):
    '''(dict of {tuple of (str, str, str, str): int}) -> dict of {str:int}
    '''
    my_dictionary = {}
    counter = 0

    for (alphabet, picks) in letter.items():
        if (alphabet[0]):
            my_dictionary[alphabet[0]] = picks
        else:
            my_dictionary[alphabet[0]] = counter

    return my_dictionary
这将返回我无法删除的重复密钥


谢谢。

以下功能应该可以使用:

def popular(letter):
    '''(dict of {tuple of (str, str, str, str): int}) -> dict of {str:int}
    '''
    my_dictionary = {}
    for alphabet, picks in letter.items():
        if alphabet[0] in my_dictionary:
            my_dictionary[alphabet[0]] += picks
        else:
            my_dictionary[alphabet[0]] = picks
    return my_dictionary
例如:

>>> letter = {('A','B','C','D'):3, 
... ('A','C','B','D'):2,
... ('B','D','C','A'):4,
... ('D','C','B','A'):3,
... ('C','B','A','D'):1,
... ('C','D','A','B'):1}
>>> popular(letter)
{'A': 5, 'C': 2, 'B': 4, 'D': 3}
这可以通过以下方式更简洁地实现:


你的一个同学正在做作业。
from collections import defaultdict
def popular(letter):
    my_dictionary = defaultdict(int)
    for alphabet, picks in letter.items():
        my_dictionary[alphabet[0]] += picks
    return dict(my_dictionary)