数据结构中的Python深层排序

2024-06-01 01:12:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在对Python脚本已经有点不知所措了,不太明白我在做什么。你知道吗

我有一本字典,其中键是字符串,值是字符串列表。我需要对列表中的字符串进行字母数字排序,以便

"role_powerdns": [
  "name-2.example.com",
  "name-1.example.com",
  "name-3.example.com"

 ],

看起来像这样

"role_powerdns": [
  "name-1.example.com",
  "name-2.example.com",
  "name-3.example.com"
 ],

完整的原始代码,我的工作是在这里作为参考。https://github.com/AutomationWithAnsible/ansible-dynamic-inventory-chef/blob/master/chef_inventory.py

我不完全理解我自己的代码是如何工作的,我只知道它返回的数据结构。你知道吗

我对基本代码的本地添加是过滤掉IP并在字符串中插入.sub。我已经尝试重用下面的理解语法来修改字符串以对字符串进行排序。有人能举个例子说明如何遍历这样的嵌套结构吗?或者,如果在脚本中这么晚进行这种排序是不合适的,那么通常应该在什么时候处理它?你知道吗

    def filterIP(fullList):
       regexIP = re.compile(r'\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$')
       return filter(lambda i: not regexIP.search(i), fullList)

    groups = {key : [domain.replace('sub.example.com', 'example.com') for domain in filterIP(list(set(items)))] for (key, items) in groups.iteritems() }


    print(self.json_format_dict(groups, pretty=True))

Tags: 字符串代码name脚本com列表排序example
2条回答

福格勒德的回答几乎对我有用。我需要做的是使用iteritems。items正在做一些时髦的本地版本,这些版本在代码块完成后会被丢弃

Iterating over dictionaries using 'for' loops

 for key, value in groups.iteritems():
      value.sort()

如果d是您的字典,那么您可以按

for _, l in d.items():
    l.sort()

相关问题 更多 >