python 3字典键到一个字符串,值到另一个字符串


问题内容

如果有字典:

dict={'a':'b'}

在python 3中,我想将此字典键转换为字符串,并将其值转换为另一个字符串:

print(key)
key='a'
print(type(key))
str

print(value)
value='a'
print(type(value))
str

一些尝试:

str(dict.key()) # returns 'dict' object has no attribute 'key'

json.dump(dict) # returns {'a':'b'} in string, but hard to process

任何简单的解决方案?谢谢!


问题答案:

用途dict.items()

您可以使用dict.items()dict.iteritems()对于python
2),它返回键和值对,并且您可以简单地选择第一个。

>>> d = { 'a': 'b' }
>>> key, value = list(d.items())[0]
>>> key
'a'
>>> value
'b'

我将d.items()其转换为一个列表,并选择了它的0索引,也可以将其转换为一个迭代器,并使用next以下方法首先选择它:

>>> key, value = next(iter(d.items()))
>>> key
'a'
>>> value
'b'

使用dict.keys()dict.values()

您还可以使用dict.keys()检索所有字典键,并选择其第一个键。并用于dict.values()检索所有字典值:

>>> key = list(d.keys())[0]
>>> key
'a'
>>> value = list(d.values())[0]
>>> value
'b'

在这里,您也可以使用next(iter(...))

>>> key = next(iter(d.keys()))
>>> key
'a'
>>> value = next(iter(d.values()))
'b'

确保获得str

上面的方法不能确保检索字符串,它们将返回键的实际类型和值。您可以将它们显式转换为str

>>> d = {'some_key': 1}
>>> key, value = next((str(k), str(v)) for k, v in d.items())
>>> key
'some_key'
>>> value
'1'
>>> type(key)
<class 'str'>
>>> type(value)
<class 'str'>

现在,keyvalue都是str。尽管dict的实际价值是一个int

免责声明
:这些方法将选择第一个键,字典的值对(如果它具有多个键值对),而忽略其他键。如果字典为空,它将不起作用。如果您需要一种在字典中有多个值的情况下只会失败的解决方案,那么您应该寻找@SylvainLeroux的答案