迭代Python字典并特殊追加到新列表?

2024-04-08

我想迭代字典,并将按其值(频率)重复的每个键(字母)附加到新列表中。

例如: 输入:{'A':1, 'B':2}。预期输出:['A', 'B', 'B']

我正在做的事情不起作用。我应该在函数中写什么来做到这一点?

def get_freq_dict():
    freq_dict = {'J' : 1, 'K' : 1, 'Q' : 1, 'X' : 1, 'Z' : 1,\
                'B' : 2, 'C' : 2, 'F' : 2, 'H' : 2, 'M' : 2, 'P' : 2,\
                'V' : 2, 'W' : 2, 'Y' : 2, '' : 2,\
                'G' : 3, 'D' : 4, 'L' : 4, 'S' : 4, 'U' : 4,\
                'N' : 6, 'R' : 6, 'T' : 6, 'O' : 8, 'A' : 9, 'I' : 9,\
                'E' : 12}
    return freq_dict


def bag_of_letters(freq_dict):
    freq_lst = [] 
    for key, value in freq_dict.items():
        for range in(value):
            freq_lst.append(value)
    return freq_lst


def main():

    freq_dict = get_freq_dict()
    freq_lst = bag_of_letters(freq_dict)

    print(freq_dict, freq_lst)
main()

罪魁祸首:

for range in(value):
    freq_lst.append(value)

救援者:

for i in range(value):
     freq_lst.append(key)

Hence:

def get_freq_dict():
    freq_dict = {'J' : 1, 'K' : 1, 'Q' : 1, 'X' : 1, 'Z' : 1,\
                'B' : 2, 'C' : 2, 'F' : 2, 'H' : 2, 'M' : 2, 'P' : 2,\
                'V' : 2, 'W' : 2, 'Y' : 2, '' : 2,\
                'G' : 3, 'D' : 4, 'L' : 4, 'S' : 4, 'U' : 4,\
                'N' : 6, 'R' : 6, 'T' : 6, 'O' : 8, 'A' : 9, 'I' : 9,\
                'E' : 12}
    return freq_dict


def bag_of_letters(freq_dict):
    freq_lst = []
    for key, value in freq_dict.items():
       # print(key, value)
        for i in range(value):
            freq_lst.append(key)
    return freq_lst


def main():

    freq_dict = get_freq_dict()
    freq_lst = bag_of_letters(freq_dict)

    print(freq_lst)
main()

OUTPUT:

['J', 'K', 'Q', 'X', 'Z', 'B', 'B', 'C', 'C', 'F', 'F', 'H', 'H', 'M', 'M', 'P', 'P', 'V', 'V', 'W', 'W', 'Y', 'Y', '', '', 'G', 'G', 'G', 'D', 'D', 'D', 'D', 'L', 'L', 'L', 'L', 'S', 'S', 'S', 'S', 'U', 'U', 'U', 'U', 'N', 'N', 'N', 'N', 'N', 'N', 'R', 'R', 'R', 'R', 'R', 'R', 'T', 'T', 'T', 'T', 'T', 'T', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'I', 'I', 'I', 'I', 'I', 'I', 'I', 'I', 'I', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E']

OR

如果你想要它们配对得很好:

 for i in range(value):
     freq_lst.append([key]*value)

OP: 但是我在打印输出时仍然遇到问题。它给了我我正在寻找的东西,而且还提供了顶部的原始词典

Ans:因为你要打印dictlist:

print(freq_dict, freq_lst)

只需打印list反而:

print(freq_lst)

EDIT 2:

将相似元素分组在一起的另一种更好的方法是使用groupby():

追加key only:

 for i in range(0, value):
      freq_lst.append(key)

进而:

 print([list(j) for i, j in groupby(freq_lst)])

OUTPUT:

[['J'], ['K'], ['Q'], ['X'], ['Z'], ['B', 'B'], ['C', 'C'], ['F', 'F'], ['H', 'H'], ['M', 'M'], 
 ['P', 'P'], ['V', 'V'], ['W', 'W'], ['Y', 'Y'], ['', ''], ['G', 'G', 'G'], 
 ['D', 'D', 'D', 'D'], ['L', 'L', 'L', 'L'], ['S', 'S', 'S', 'S'], ['U', 'U', 'U', 'U'], 
 ['N', 'N', 'N', 'N', 'N', 'N'], ['R', 'R', 'R', 'R', 'R', 'R'], 
 ['T', 'T', 'T', 'T', 'T', 'T'], ['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'], 
 ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'], 
 ['I', 'I', 'I', 'I', 'I', 'I', 'I', 'I', 'I'], 
 ['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E']]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

迭代Python字典并特殊追加到新列表? 的相关文章

随机推荐

  • Python tkinter 组合框

    当我单击组合框的名称而不使用 检查 等按钮来显示值时 我想填写我的条目 我怎样才能做到这一点 import tkinter as tk from tkinter import ttk import csv root tk Tk cb ttk
  • 当非模态时,展开 Segue 不会忽略自适应弹出框演示

    iOS 9 beta 更新 Apple 可能已针对 iOS 9 修复了此问题 如果您在 iOS 8 上解决了此问题 请确保它在 iOS 9 上也能正常工作 在故事板中 我创建了一个弹出框演示转场 以通过按钮呈现导航和视图控制器 并创建展开转
  • 动态 SQL 示例

    我最近了解了什么是动态 sql 它对我来说最有趣的功能之一是我们可以使用动态列名和表 但我无法思考现实生活中有用的例子 我唯一想到的是统计表 假设我们有一个包含名称 类型和created data 的表 然后我们想要一个表 其列中是从cre
  • 我可以在不更改系统 DPI 设置的情况下设置 Java Swing 应用程序的 DPI 分辨率吗?

    我有一个使用 Substance LookAndFeel 并以 Windows 作为目标平台的 Java 应用程序 我想增加应用程序的 DPI 设置without更改系统设置 我想这样做是因为我不想强迫用户重新启动 Windows 而且许多
  • git grep 按文件扩展名

    我知道 如果我只想在具有特定扩展名的文件上 grep 查找模式 我可以这样做 searches recursively and matches case insensitively in only javascript files for
  • 如何检查条件并将文本写入文本文件 oracle 表单

    我正在 Oracle Forms 中创建过程 其中检查验证数据并将数据插入表中 另请检查验证数据如果条件为真 则将一些文本写入文本文件 如果条件不为真 则将一些文本写入文本文件 Like Validation No 1 OK Validat
  • 生成聚合结构

    所以这里有一个问题 我想要做的是根据一组输入值生成一个数据结构 由于这是多语言提交 因此我们将输入列表视为键 值对数组 因此 还有一系列哈希 映射 字典或任何能让您满意的术语 我将在这里将所有符号保留为 JSON 希望它具有足够的通用性来翻
  • 提高 SURF 在小图像上的性能

    我在网络上遇到的每个 SURF 实现似乎都特别不擅长从小图像 例如 100x100 或更小 中提取有用数量的兴趣点 我尝试了多种方法 1 使用各种放大算法 从简单的最近邻算法到更高级的算法 基本上每个放大器 imagemagick 都提供
  • 如何更新 Haskell Map 中的项目?

    我是 Haskell 的新手 正在尝试找出一个合理的方法 写入地图的方式 为解决特定问题做准备 欧拉工程问题 我希望写一个函数来填充 带有记录的地图 但我无法让它发挥作用 let似乎创建局部变量而不是治疗smap作为一个全球性的 一定有某种
  • 使用javamail连接到hotmail?

    我想知道是否可以使用JavaMail 连接到Hotmail 我已经尝试过 但它不起作用 连接被拒绝 String host pop3 live com String username email protected cdn cgi l em
  • 自定义 QML 模块部署到 Android:缺少 QML 依赖项

    我正在开发一个包含一些特殊类型的自定义 QML 模块 我们称之为 MyModule 它用作其他应用程序项目的预编译库 即源代码对它们不可用 它通过 import MyModule 1 0 设置必要的导入路径等来使用 该模块包含基于 C 的
  • 过渡导航栏标题

    在一个名为 Luvocracy 的应用程序中 当用户在屏幕上向上滑动时 导航栏的标题会发生变化 旧标题被推高 而新标题则过渡进来 我现在没有视频 但这里有一些屏幕截图 https www dropbox com s sns0bsxkdv7p
  • 安全存储客户端敏感数据

    背景故事我在一家中小型公司工作 我们正在重新设计面向客户的会计门户 我的经理希望使用存储在最终用户计算机上的 cookie 中的信用卡信息来进行单击付款选项 我根本不喜欢这个想法 事实上我仍在努力改变他的想法 话虽这么说 我正在努力使其尽可
  • 如何在 alpine.js 应用程序中制作具有时间间隔的计时器

    使用 alpine js 2 我尝试在应用程序的页脚 为所有布局设置 中定义计时器 div div div span style background color yellow span div div div
  • 如何查看浏览器请求?

    我正在与另一位程序员合作 他最近向我发送了一个新的基于 JSON 的 API 来工作 他说我可以通过访问特定网站并查看浏览器请求来查看所有 API 调用的示例 我的问题是 如何查看我的浏览器请求 我之前曾使用 Wireshark 来分析我的
  • JAVA ANDROID - 获取文件夹的文件列表

    我想在一个文件夹中显示不同文件夹的图像GridView 但我不知道需要做什么才能获取包含可绘制文件夹内的文件名称的列表 此方法将为您提供一个包含 dir 文件夹列表以及子文件夹列表的列表 public void listf String d
  • 从调用者类停止异步 Spring 方法

    我有一个类调用 Rest Web 服务来从服务器接收文件 在传输字节时 我创建了一个异步任务 它检查与服务器的连接是否正常 以便在出现错误时允许停止连接 这个异步任务有一个我必须停止的循环 Component public class Co
  • POJO 反序列化期间忽略 @JsonTypeInfo 属性

    我使用 JsonTypeInfo 指示 Jackson 2 1 0 在 鉴别器 属性中查找具体类型信息 这很有效 但在反序列化期间 鉴别器属性没有设置到 POJO 中 根据 Jackon 的 Javadoc com fasterxml ja
  • CMake 未从 conan 中找到 boost 库

    所以我试图让我的 cmake 与 conan boost 一起工作 为此 我有一个简单的柯南文件 from conans import ConanFile class Boost Conan Cmake MinimalConfig Cona
  • 迭代Python字典并特殊追加到新列表?

    我想迭代字典 并将按其值 频率 重复的每个键 字母 附加到新列表中 例如 输入 A 1 B 2 预期输出 A B B 我正在做的事情不起作用 我应该在函数中写什么来做到这一点 def get freq dict freq dict J 1