Python如何拆分字符串列表以获得原始ord中的唯一拆分

2024-04-27 12:52:33 发布

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

我有以下字符串列表:

diabo_faves = [
  {"Description": "Local-Standard-Office"},
  {"Description": "Local-Standard-Extended},
  {"Description": "Local-Standard-247"},
  {"Description": "Direct-Standard-Office"},
  {"Description": "Direct-Standard-Extended"},
  {"Description": "Direct-Standard-247"},
  {"Description": "Premium-Standard-Office"},
  {"Description": "Premium-Standard-Extended"},
  {"Description": "Premium-Standard-247"},
];

我想从JSON中得到以下结果(按顺序):

Filters: [
  [
    "Local",
    "Direct",
    "Premium"
  ],
  [
    "Standard"
  ],
  [     
    "Office",
    "Extended",
    "247"
  ]
]

但是,当我使用此方法时:

def get_filters(self, favorites, seperator = "-", ignores = []):

    favorites = self.prepare(favorites, ignores)

    steps = []
    for fave in favorites:

        filters = fave.split(seperator)

        for index, filter in enumerate(filters):

            try:
                steps[index].add(filter)
            except IndexError:
                steps.append(set([filter]))

    return [list(step) for step in steps]  

我得到的结果顺序不正确,如下所示:

Filters: [
[
    "Premium",
    "Local",
    "Direct"
  ],
  [
    "Standard"
  ],
  [     
    "247",
    "Extended",
    "Office"
  ]
]

如何更改方法以保持指定的原始顺序?”“本地”、“直接”、“高级”等。。你知道吗


Tags: inextendedfor顺序localdescriptionfiltersteps
1条回答
网友
1楼 · 发布于 2024-04-27 12:52:33

可以使用^{}^{}执行此操作:

from collections import OrderedDict
from itertools import izip

splitted_values = izip(*(x['Description'].split('-') for x in diabo_faves))
print [list(OrderedDict.fromkeys(x)) for x in splitted_values]
#[['Local', 'Direct', 'Premium'], ['Standard'], ['Office', 'Extended', '247']]

这里splitted_values包含所有列值:

[
 ('Local', 'Local', 'Local', 'Direct', 'Direct', 'Direct', 'Premium', 'Premium', 'Premium'),
 ('Standard', 'Standard', 'Standard', 'Standard', 'Standard', 'Standard', 'Standard', 'Standard', 'Standard'),
 ('Office', 'Extended', '247', 'Office', 'Extended', '247', 'Office', 'Extended', '247')
]

然后,我们将每一项传递给OrderedDict.fromkeys,以便只按照第一次看到的顺序获得唯一项。如果OrderedDict对您不可用(在python2.7中引入),那么您可以使用itertools中的^{} recipe。你知道吗

相关问题 更多 >