gpt4 book ai didi

python - 以任意顺序处理字典键

转载 作者:行者123 更新时间:2023-12-01 03:20:23 24 4
gpt4 key购买 nike

我想将字典转换为字符串。初学者级别的问题因我必须遵守的一些规则而变得复杂:

  • 有一个已知 key 的列表,必须以特定的任意顺序出现
  • 每个已知键都是可选的,即它可能不存在于字典中
  • 保证字典中至少存在一个已知键
  • 字典可能包含额外的键;它们必须在已知的 key 之后,并且它们的顺序并不重要
  • 我无法对键添加到字典的顺序做出假设

在其他字典键之前处理某些字典键的Python方式是什么?

到目前为止,我有以下功能:

def format_data(input_data):
data = dict(input_data)
output = []
for key in ["title", "slug", "date", "modified", "category", "tags"]:
if key in data:
output.append("{}: {}".format(key.title(), data[key]))
del data[key]

if data:
for key in data:
output.append("{}: {}".format(key.title(), data[key]))

return "\n".join(output)
data = {
"tags": "one, two",
"slug": "post-title",
"date": "2017-02-01",
"title": "Post Title",
}

print(format_data(data))

data = {
"format": "book",
"title": "Another Post Title",
"date": "2017-02-01",
"slug": "another-post-title",
"custom": "data",
}

print(format_data(data))

Title: Post Title
Slug: post-title
Date: 2017-02-01
Tags: one, two

Title: Another Post Title
Slug: another-post-title
Date: 2017-02-01
Custom: data
Format: book

虽然这个函数确实提供了预期的结果,但它有一些问题让我认为可能有更好的方法。即,复制output.append()行并复制输入数据结构,以允许对其进行修改而不会产生副作用。

总而言之,如何按特定顺序并在其他键之前处理某些键?

最佳答案

我建议您只需运行一对列表推导式:一个用于所需的键,一个用于其余的。将它们按所需的顺序批量连接,而不是一次连接一个。这将构建输出的关键步骤减少为单个命令。

第一个理解在字典中查找所需的键;第二个查找“所需”列表中的任何字典键。

def format_data(input_data):
data = dict(input_data)
key_list = ["title", "slug", "date", "modified", "category", "tags"]
output = ["{}: {}".format(key.title(), data[key]) for key in key_list if key in data] + \
["{}: {}".format(key.title(), data[key]) for key in data if key not in key_list]
return "\n".join(output)

关于python - 以任意顺序处理字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41987331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com