从 TXT 文件创建 python 字典 - 值聚合
Create python dictionary from TXT file - value aggregation
我有一个 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%
无需为 pandas 操心。文本文件是可迭代的。只要打开它,对行(字符串)进行操作并填充一个字典。
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]}
然后是简单的数学运算:
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: 10.0,
11: 83.37837837837839,
18: 1.0810810810810811,
13: 5.540540540540541}
我有一个 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%
无需为 pandas 操心。文本文件是可迭代的。只要打开它,对行(字符串)进行操作并填充一个字典。
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]}
然后是简单的数学运算:
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: 10.0,
11: 83.37837837837839,
18: 1.0810810810810811,
13: 5.540540540540541}