我想将字典转换为字符串。是什么初学者级别的问题是,我必须坚持一些规则复杂:以任意顺序处理字典密钥
- 存在必须在特定的问世已知密钥列表,任意顺序
- 每个已知键是可选,即它可能不存在于字典中
- 保证至少一个已知密钥将出现在字典中
- 字典可能包含额外的密钥;他们一定要来认识的按键及它们的顺序并不重要
- 我不能对顺序键将被添加到字典
什么是别人之前处理一些字典键的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()
行被复制并且输入数据结构被复制以允许其修改而没有副作用。
综上所述,我怎么可以处理特定的顺序和之前其他一些按键按键?
我没有看到你的实现有什么特别的错误。 '如果数据:'是不必要的,但就是这样。 – glibdud
您是否真的想在迭代时使用'del data [key]'(这是不好的做法),或者您只是这么做以确保已知密钥不会迭代两次? – smci
也不需要有'dict(input_data)',除非有机会输入不是字典(在你的例子中没有表示)。 – skrrgwasme