Используя Counter()
с Python3.x, я создал скрипт, который будет подсчитывать количество символов в текстовом файле, а затем выводит словарь python для каждого файла.Как подмножество значений словаря Python и удаление других?
import glob
from collections import Counter
files = glob.glob("*.txt")
for f in files:
for line in f:
filename, contents = line.strip().split()
results[filename] = Counter(line)
Вот выход:
{ "textfile1.txt": Counter({'C': 23426, 'T': 5111, ' ': 4231, 'l': 3321, 'G': 353, '4': 2987797, 'R': 2, 'B': 223185, 'r': 186587}) }
Значение пар ключ-значение включает в себя пары ключ-значение в пределах Counter()
, который показывает количество счетчиков на каждый символ, например, "character": # of characters
.
Мой вопрос: учитывая эти значения, как выбрать только определенные символы, например. только C
и T
и удалите все остальные.
Моя идея была бы какая-то список понимания:
dictionary1 # original dictionary above
correct_keys = ["C", "T"]
corrected_dictionary1 = {k: v for k, v in dictionary1.values().split if values in correct_keys}
Это не совсем работает; вот ошибка:
AttributeError: 'dict_values' object has no attribute 'split'
Почему вы думаете, что вы можете использовать 'split' здесь? '.split' - это метод' str' ... просто удалите его. Кроме того, 'values' i - имя, которое не определено. Я думаю, вы имеете в виду 'v'. –
@ juanpa.arrivillaga Это, очевидно, ошибка. Я пытаюсь «разбить» значения «dictionary1», которые являются отдельными парами ключ-значение. – ShanZhengYang
... правильно, это то, что вы сделали, когда вы распаковали этот кортеж в 'k, v'. –