python - 对多语言国家/地区名称进行排序

标签 python django sorting lambda compare

我有一个不同语言的国家/地区名称列表,我正在尝试按国家/地区名称对其进行排序。目前,排序是根据索引值进行排序。

这是我截断的国家/地区名称列表:

ADDRESS_COUNTRY_STYLE_TYPES = {}

for language_code in LANGUAGES.iterkeys():
    ADDRESS_COUNTRY_STYLE_TYPES[language_code] = OrderedDict()
    if 'af' in LANGUAGES.iterkeys(): 
        ADDRESS_COUNTRY_STYLE_TYPES['af'][0] = " Kies 'n land of gebied" # Select a country or territory
        ADDRESS_COUNTRY_STYLE_TYPES['af'][1] = "Afganistan" #Afghanistan
        ADDRESS_COUNTRY_STYLE_TYPES['af'][2] = "Åland" #Aland
        ADDRESS_COUNTRY_STYLE_TYPES['af'][3] = "Albanië" #Albania
        ....
        ADDRESS_COUNTRY_STYLE_TYPES['af'][14] = "Australië" #Australia
        ADDRESS_COUNTRY_STYLE_TYPES['af'][15] = "Oostenryk" #Austria
        ADDRESS_COUNTRY_STYLE_TYPES['af'][16] = "Aserbeidjan" #Azerbaijan
        ADDRESS_COUNTRY_STYLE_TYPES['af'][17] = "Bahamas" #Bahamas
        ADDRESS_COUNTRY_STYLE_TYPES['af'][18] = "Bahrein" #Bahrain
        ADDRESS_COUNTRY_STYLE_TYPES['af'][19] = "Bangladesj" #Bangladesh
        ADDRESS_COUNTRY_STYLE_TYPES['af'][20] = "Barbados" #Barbados
        ADDRESS_COUNTRY_STYLE_TYPES['af'][21] = "Wit-Rusland" #Belarus
        ADDRESS_COUNTRY_STYLE_TYPES['af'][22] = "België" #Belgium
        ....

这是我的views.py 文件中调用国家/地区名称的代码:

def get_address_country_style_types(available_languages, with_country_style_zero=True):
    address_country_style_types = {}
    preview_labels = {}
    for code, name in available_languages:
        address_country_style_types[code] = ADDRESS_COUNTRY_STYLE_TYPES[code].copy()
        if not with_country_style_zero:
            address_country_style_types[code].pop(0)
        preview_labels[code] = ADDRESS_DETAILS_LIVE_PREVIEW_LABELS[code]
        # in case preview labels are not defined for the language code
        # fall back to 'en', which should always be there
        if len(preview_labels[code]) == 0:
            preview_labels[code] = ADDRESS_DETAILS_LIVE_PREVIEW_LABELS['en']

    address_country_style_types = sorted(address_country_style_types, key=lambda x:x[1])

    return address_country_style_types, preview_labels

上面的代码只返回html下拉列表中的索引号。问题出在以下代码行(或者更重要的是我不知道如何让它工作):

address_country_style_types = sorted(address_country_style_types, key=lambda x:x[1])

如何返回排序后的国家/地区列表? 我在这里是否以正确的方式使用 lambda?我应该在这里使用 lambda 吗?

我已经为此工作了几天,我的编码能力不是很强,并且我阅读了很多相关帖子但无济于事,因此感谢您的帮助。

我读过这篇文章blog关于对 HTML 选择下拉列表中出现的多语言国家/地区名称列表进行排序 - 这本质上就是我正在尝试做的事情。

编辑

注释掉上面代码中的下面的代码行确实会返回国家/地区名称列表,但国家/地区名称是按索引值而不是国家/地区名称排序的。

address_country_style_types = sorted(address_country_style_types, key=lambda x:x[1])

最佳答案

我无法以编程方式对多语言国家/地区名称进行排序。

相反,我将列表复制到 Excel 中并单击排序按钮(基于翻译的国家/地区名称 - 索引值保持统一),然后将数据复制回文件。按预期工作 - 只是需要做很多工作。

我希望这对某人有帮助。

关于python - 对多语言国家/地区名称进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276750/

相关文章:

django - 如何覆盖 Django Rest Framework 中 token 模型的用户字段?

javascript - Django 和使用模态窗口

java - 合并排序算法的问题

QMimeData 中的 Python 对象

Python编码utf错误

django - Geodjango 管理员,显示点场而不是 map

java - 查找数组中的前 N ​​个元素

在 haskell 中对列表的列表进行排序

python - 使用 tkinter 中的 tkFont 来识别字体 (Helvetica-Light) 是否可用/已安装

python - 在存储的数据上重播 Scrapy 蜘蛛