gpt4 book ai didi

python - 有没有办法返回/打印不带引号或括号的列表项?

转载 作者:太空狗 更新时间:2023-10-30 02:22:57 24 4
gpt4 key购买 nike

抱歉,如果这已经在某处提到(我找不到它)。

我基本上想从列表中列出一个项目,但它包括引号和括号(我不想要)。这是我的数据:

inputData = {'red':3, 'blue':1, 'green':2, 'organge':5}

这是我根据键或值查找项目的类。

class Lookup(dict):
"""
a dictionary which can lookup value by key, or keys by value
"""
def __init__(self, items=[]):
"""items can be a list of pair_lists or a dictionary"""
dict.__init__(self, items)

def get_key(self, value):
"""find the key(s) as a list given a value"""
return [item[0] for item in self.items() if item[1] == value]

def get_value(self, key):
"""find the value given a key"""
return self[key]

它工作正常,除了括号。

print Lookup().get_key(2) # ['blue']  but I want it to just output blue

我知道我可以通过替换括号/引号(LookupVariable.replace("'", ""))来做到这一点,但我想知道是否有更 pythonic 的方式来做到这一点。

谢谢。

最佳答案

改变

return [item[0] for item in self.items() if item[1] == value]

return next(item[0] for item in self.items() if item[1] == value)

现在您正在返回列表推导的结果——列表。相反,您想要返回等效生成器表达式返回的第一项——这就是 next 所做的。

编辑:如果您确实想要多个项目,请使用 Greg 的回答——但在我看来您只想获得一个 key ——这是一个很好的方法.

如果您希望它在值不存在时引发 StopIteration 错误,请将其保留如上。如果您希望它返回其他内容(例如 None),请执行以下操作:

return next((item[0] for item in self.items() if item[1] == value), None)

关于python - 有没有办法返回/打印不带引号或括号的列表项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7494384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com