【问题标题】:Getting the first string from a tuple which is a key of a dict从作为字典键的元组中获取第一个字符串
【发布时间】:2025-12-14 06:00:02
【问题描述】:

我有以下 python 字典:

lines = {('mid', 'north'): None,
         ('south', 'mid'): None,
         ('south', 'north'): None,
        }

我想要实现的是获取lines 字典的一个键的第一个字符串或/和第二个字符串。

所以lines.keys() 给了我dict_keys([('mid', 'north'), ('south', 'mid'), ('south', 'north')])

我想要的是这样的:

lines.keys()[0][0]
'mid'

ofc 它不是这样工作的,但是是否有一个函数或命令可以将元组('mid', 'north') 的第一个字符串作为输出提供给我?请记住('mid', 'north') 是字典的键。

【问题讨论】:

    标签: python dictionary tuples key


    【解决方案1】:

    您可以将dict_keys 转换为元组,因为它是可迭代的:

    >>> k = tuple(lines.keys())
    >>> k[0][0]
    'mid'
    

    【讨论】:

    • 这看起来是最简单的解决方案。它有效。顺便说一句,当你做k = list(lines.keys()) 然后k[0][0] 给出mid 而不是'mid',你能解释这是为什么吗?并添加到您的答案中?
    • k[0][0] 包含字符串 mid。在 python 中,您可以将其写为'mid'(或"mid"),但如果您使用print(k[0][0]),它只会输出字符串的内容(mid)。如果要获取字符串representation,请执行print(repr(k[0][0])),它将打印'mid'。交互式控制台默认为您提供字符串表示形式。
    【解决方案2】:

    您需要将您的密钥转换为列表,并且由于 dict 将按随机顺序排列,您需要 sort 它。

    lines = {('mid', 'north'): None,
             ('south', 'mid'): None,
             ('south', 'north'): None,
            }
    
    print(list(sorted(lines.keys()))[0][0]) # -> mid
    

    【讨论】:

    • 看起来不错,但为什么要排序?
    • 我不认为它会是随机顺序,但它会是我设置它们的顺序。所以[0] 总是('mid', 'north')[1]('south', 'mid'),等等......
    • 不,它不会尝试 print(lines.keys()) 运行那几次。
    最近更新 更多