如何从字典中删除重复的键值

Dead_Ling0

所以我正在写一些代码并且遇到了一个障碍,这个障碍是我需要从我的字典中删除重复的值。我在这里看到了一些关于转换为元组和使用集合只保留唯一值的帖子。然而,这些解决方案对我不起作用,因为我的值是一个整数而不是一个列表。

因此,只是想知道是否有人可以提供帮助/指出方向将非常感激。请在下面找到代码。

import string
# Variables and the like
alphabet = string.ascii_uppercase
fname = input('Enter the name of file which contains the cipher text: ')
file = open(fname+'.txt', 'r')
ctext = file.read()
ltrfreq = ['E','T','A','O','I','N','S','R','H','L','D','C','U','M','F','P','G','W','Y','B','V','K','X','J','Q','Z']
freqs = {}

# creating a dictionary which pairs letters to the frequency in the text
for i in alphabet:
    if ctext.count(i) == 0:
        continue
    else:
        freqs[i] = ctext.count(i)
print(freqs)

# Need some code that removes duplicate values so as we don't replace letters that have the same frequency


# Replacing the highest frequency letters with the expected value
n = 0
for i in range(0, len(freqs)):
    maximum = max(freqs, key=freqs.get)
    for j in ctext:
        ctext = ctext.replace(maximum, ltrfreq[n])
    del freqs[maximum]
    n += 1

print(ctext)  

作为输入的文件只是一个 .txt 文件,它仅包含以下示例:

XULTPAAJCXITLTLXAARPJHTIWTGXKTGHIDHIPXCIWTVGTPILPITGHLXIWIWTXGQADDS

Mayur Kr. 加格

据我了解,您正在尝试根据字母的频率将文本中的字母替换为字母。而您想要实现的是,不会替换具有相同频率的字母。也就是说,如果ctext有相同的编号。A 和 O 出现的次数(比如 4),它们都不会被替换。为此,您可以更改freqs定义方式。目前,它保持一个字母作为键,它的频率作为它的值。相反,尝试使用频率作为键,所有具有该频率的字母都作为值存储在列表中。看起来如何——{1:["A"], 2:["B", "C"]}

为了实现这一点,我相信这段代码会起作用 -

for i in alphabet:
    count = ctext.count(i)
    if count == 0:
        continue
    else:
        freqs[count] = freqs.get(count, []) + [i]
print(freqs)

现在,您可以按降序对 freqs 的键进行排序,并且仅当存储为 value 的列表的大小为 1 时才替换与该频率关联的字母。例如,如果其中一个键freqs是 9,则只需检查if len(freqs[9]) == 1与否。如果是,请用您选择freqs[9][0]的字母替换给定的字母ltrfreq

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从字典数组中删除键值的重复项

来自分类Dev

如何从列表中删除重复的字典对象

来自分类Dev

如何在编辑模式下删除字典中的键值对?

来自分类Dev

如何用重复的键值创建字典?

来自分类Dev

从字典列表中删除重复的键,仅保留最大值的那个键值

来自分类Dev

在python中从字典中删除多个键值对

来自分类Dev

从列表中删除值中的重复键值对

来自分类Dev

如何从VBScript中的字典中删除重复的值

来自分类Dev

Python按键值对字典进行重复数据删除

来自分类Dev

如何在Hashmap中删除重复的键值对?-不只是重复的键或值

来自分类Dev

如何在Hashmap中删除重复的键值对?-不只是重复的键或值

来自分类Dev

如果键包含一些子字符串,如何从字典中动态删除键值对?

来自分类Dev

如何在Python中的字典项列表中按值删除重复的字典项

来自分类Dev

如何比较字典列表中的多个键值?

来自分类Dev

如何比较字典列表中的多个键值?

来自分类Dev

如何在JavaScript对象列表中按键值删除重复项?

来自分类Dev

从字符串列表中删除重复项并删除键值

来自分类Dev

在PHP中,如何删除对象数组中的重复项,其中重复项定义为具有相同值的键值对的子集

来自分类Dev

如何从Python列表中删除重复的字典(带有嵌套字典)?

来自分类Dev

合并保留重复键值的字典

来自分类Dev

合并2个字典并删除重复元素并减去重复元素的键值

来自分类Dev

在字典中按值删除重复项

来自分类Dev

删除字典python中的重复值

来自分类Dev

在字典中按值删除重复项

来自分类Dev

从字典中删除重复的熊猫数据框

来自分类Dev

从元组字典中删除重复项

来自分类Dev

删除python类中的重复字典

来自分类Dev

从字典列表中删除重复项-Python

来自分类Dev

在字典中按值删除重复项

Related 相关文章

  1. 1

    从字典数组中删除键值的重复项

  2. 2

    如何从列表中删除重复的字典对象

  3. 3

    如何在编辑模式下删除字典中的键值对?

  4. 4

    如何用重复的键值创建字典?

  5. 5

    从字典列表中删除重复的键,仅保留最大值的那个键值

  6. 6

    在python中从字典中删除多个键值对

  7. 7

    从列表中删除值中的重复键值对

  8. 8

    如何从VBScript中的字典中删除重复的值

  9. 9

    Python按键值对字典进行重复数据删除

  10. 10

    如何在Hashmap中删除重复的键值对?-不只是重复的键或值

  11. 11

    如何在Hashmap中删除重复的键值对?-不只是重复的键或值

  12. 12

    如果键包含一些子字符串,如何从字典中动态删除键值对?

  13. 13

    如何在Python中的字典项列表中按值删除重复的字典项

  14. 14

    如何比较字典列表中的多个键值?

  15. 15

    如何比较字典列表中的多个键值?

  16. 16

    如何在JavaScript对象列表中按键值删除重复项?

  17. 17

    从字符串列表中删除重复项并删除键值

  18. 18

    在PHP中,如何删除对象数组中的重复项,其中重复项定义为具有相同值的键值对的子集

  19. 19

    如何从Python列表中删除重复的字典(带有嵌套字典)?

  20. 20

    合并保留重复键值的字典

  21. 21

    合并2个字典并删除重复元素并减去重复元素的键值

  22. 22

    在字典中按值删除重复项

  23. 23

    删除字典python中的重复值

  24. 24

    在字典中按值删除重复项

  25. 25

    从字典中删除重复的熊猫数据框

  26. 26

    从元组字典中删除重复项

  27. 27

    删除python类中的重复字典

  28. 28

    从字典列表中删除重复项-Python

  29. 29

    在字典中按值删除重复项

热门标签

归档