Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有方法返回/打印不带引号或括号的列表项?_Python - Fatal编程技术网

Python 是否有方法返回/打印不带引号或括号的列表项?

Python 是否有方法返回/打印不带引号或括号的列表项?,python,Python,抱歉,如果这已经在某处提到(我找不到) 我基本上想从列表中列出一个项目,但它包括引号和括号(我不想要)。 以下是我的数据: 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 __ini

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

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

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(“,”)
)来实现这一点,但我想知道是否有更类似python的方法来实现这一点


谢谢。

您正在打印返回的列表值,Python使用括号和引号对其进行格式化。要仅打印列表中的第一个元素,请执行以下操作:

print Lookup.get_key(2)[0]
要打印列表中以逗号分隔的元素,请执行以下操作:

print ", ".join(str(x) for x in Lookup.get_key(2))

改变

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

现在您正在返回列表理解的结果--a
list
。相反,您希望返回由等效生成器表达式返回的第一项,
next
就是这样做的

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

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


我认为这样做的想法是,
get_key()
可以合法地返回多个项目。@Greg听起来好像他只想要一个键<代码>打印查找。get_key(10)[0](假设他指的是
查找的实例,而不是类)将给出
索引器,而使用
next
可以在内部处理“无结果”的情况。谢谢,这也起到了作用。为了学习的兴趣,我可以澄清一下吗?我理解格雷格的回答,但您是否在其中添加了“下一步”,因为它首先返回整个列表(即使该列表中只有一个项目),并且我们正在使用“下一步”命令移动到“下一步”,以便仅查看列表中的下一项?比如,如果列表中有两个结果,我可以继续使用“下一步”查看列表中的其他项目?@Lostsoul这会起作用,但是这个版本只返回第一个项目,如果您想要整个列表,那么只需返回它并加入它或在
for
循环中对其进行迭代,Python会自动在内部调用
next
来进行迭代——如果你想要整个过程,没有理由自己调用它。我现在就知道了。谢谢agf。你昨天也帮了我,也谢谢你。天哪,非常感谢。我没有意识到它只是打印一个列表,我可以选择项目。我对python有点陌生(并且比list/dicts更新),所以我认为这正是python打印它们的方式。非常感谢格雷格(还有..你照片中的发型太棒了)。
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)
return next((item[0] for item in self.items() if item[1] == value), None)