从Tuple获得价值

时间:2017-08-23 09:47:29

标签: python python-3.x

我是python的新手,我正在为我的问题寻找解决方案: - 我有一个像元组: -

MY_TUPLE_CHOICE = (
    ('INS', 'Instagram'), 
    ('FAB', 'Facebook'),
    ('YOU', 'Youtube'),
    ('TWT', 'Twitter'),
)

现在首先我希望使用Key inside Value获取Tuple Value,例如,如果一个键是'你'它应该返回('你','Youtube')

其次我希望在Tuplevalue中获得个人价值,例如关键是'你'它应该返回'Youtube'

3 个答案:

答案 0 :(得分:5)

您应该使用字典而不是元组:

d = dict(MY_TUPLE_CHOICE)

您现在可以按项目访问权限访问每个键的值,例如d['YOU']将返回'Youtube'

如果您确实需要第一部分,即返回给定(key, value)的{​​{1}}对,则只需使用key

答案 1 :(得分:2)

假设您必须使用tuple并且无法将数据结构更改为dict,则可以使用以下内容:

MY_TUPLE_CHOICE = (
    ('INS', 'Instagram'),
    ('FAB', 'Facebook'),
    ('YOU', 'Youtube'),
    ('TWT', 'Twitter'),
)

def get_from_tuple(my_tuple, key):
    try:
        return next(y for x, y in my_tuple if x == key)
    except StopIteration:
        return None

print(get_from_tuple(MY_TUPLE_CHOICE, 'YOU'))  # Youtube
print(get_from_tuple(MY_TUPLE_CHOICE, 'ASD'))  # None

尽管如此,请注意,对于dictionary的使用,您的任务要求和您拥有的数据类型理想。如果您被允许使用一个,只需将您的元组转换为dict(MY_TUPLE_CHOICE)

答案 2 :(得分:0)

你可以建立一个dict理解的词典。

id: myGridView
delegate: Button {
    Component.onCompleted: {
        var p = mapToGlobal(x, y)
        myCppObject.reportPosition(objectname, p.x, p.y)
    }
    Connections {
        target: myGridView
        onMovementEnded: {
        var p = mapToGlobal(x, y)
        myCppObject.reportPosition(objectname, p.x, p.y)
    }
}

首次操作:

if (!moving) [...]

进行第二次操作

abbr_dict = {item[0]: item for item in MY_TUPLE_CHOICE}