从TXT文件创建python字典-值聚合

从TXT文件创建python字典-值聚合,python,dictionary,sum,key-value-store,Python,Dictionary,Sum,Key Value Store,我有一个TXT文件的形式 22px 31 11px 326 18px 8 13px 41 22px 43 11px 291 其中第一列是字体大小(“px”),第二列是字符计数。有没有办法使用python字典将所有字体大小(键)的字符数(值)相加(求和)并除以总字符数?假定的解决方案应采用以下形式: 11px 83% # =(326+291)/(31+326+8+41+43+291) 13px 6% 18px 1% 22px 10% 不用为熊猫操心。文本文件是可编辑的。

我有一个TXT文件的形式

22px 31
11px 326
18px 8
13px 41
22px 43
11px 291
其中第一列是字体大小(“px”),第二列是字符计数。有没有办法使用python字典将所有字体大小(键)的字符数(值)相加(求和)并除以总字符数?假定的解决方案应采用以下形式:

11px    83% # =(326+291)/(31+326+8+41+43+291)
13px    6%
18px    1%
22px    10%

不用为熊猫操心。文本文件是可编辑的。只需打开它,对行(字符串)进行操作,然后填写一个单词表

file = "font.txt"

with open(file, "r") as f:
    dic = dict()
    for line in f:
        x = line.strip("\n").split(" ")

        key = int(x[0].strip("px"))
        value = int(x[1])

        if key not in dic.keys():
            dic[key] = [value]
        else:
            dic[key].append(value)
输出:

{22: [31, 43], 11: [326, 291], 18: [8], 13: [41]}
{22: 10.0,
 11: 83.37837837837839,
 18: 1.0810810810810811,
 13: 5.540540540540541}
然后是简单的数学:

total_number_of_character = sum([sum(x) for x in dic.values()])
percentage = percentage = {key:sum(value)/total_number_of_character*100 for (key, value) in dic.items()}
输出:

{22: [31, 43], 11: [326, 291], 18: [8], 13: [41]}
{22: 10.0,
 11: 83.37837837837839,
 18: 1.0810810810810811,
 13: 5.540540540540541}

你的尝试是?使用熊猫,它很容易得到请阅读和。非常感谢你的解决方案马修!最后一件事:如何按第一列对词典进行排序(即顶部字体大小为11px)?根据定义,词典是无序的。您可以用另一个数据结构替换词汇表。1.元组列表
[(font[N character 1,N character 2]),…]
然后您可以按照元组的第一个元素进行排序,如下所示:
排序(L,key=lambda x:x[0])
。2.你可以用一个定单。请阅读以下内容: