Python通过其属性之一获取列表中的行

2024-09-25 06:30:23 发布

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

所以我得到了这个列表对象,它看起来像:

[['String1', integer1], ['String2', integer2], ['String3', integer3], ['String4', integer4]]

我想通过它的整数值来获取'String1',而不只是为此创建一个新方法。有什么优雅的方法吗?你知道吗


Tags: 对象方法列表整数string1string2string3string4
2条回答

您可以使用列表:

>>> seq = [['String1', 4], ['String2', 8], ['String3', 15], ['String4', 8]]
>>> result = [s for s, i in seq if i == 8]
>>> print result
['String2', 'String4']

或者,如果您可以控制数据结构的格式,我建议您使用字典。那么获取字符串很容易:

>>> d = {8: ['String2', 'String4'], 4: ['String1'], 15: ['String3']}
>>> print d[8]
['String2', 'String4']

首先将数据转换成这种格式是相当简单的,尽管我不认为一行就可以干净利落地完成。你知道吗

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for s, i in seq:
...     d[i].append(s)
...
>>> print d
defaultdict(<type 'list'>, {8: ['String2', 'String4'], 4: ['String1'], 15: ['String3']})

或者

>>> d = {}
>>> for s,i in seq:
...     d.setdefault(i, []).append(s)
...
>>> print d
{8: ['String2', 'String4'], 4: ['String1'], 15: ['String3']}

通过使用字典,你有了更多的灵活性。你知道吗

a_dict = {  'string1' : 6,
            'string2' : 76,
            'string3' : 765,}


for key in a_dict:
    if(a_dict[key] == 76):
        print('The number ' + str(a_dict[key]) + ' has a key name of ' + key)

如果需要,还可以将列表作为值。你知道吗

相关问题 更多 >