Python 3 字典的键转为字符串,值转为另一个字符串

13
如果有一个字典:
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

有简单的解决方案吗?谢谢!


你要找的方法是keys()而不是key() - drum
1
print(str(dict.keys())) shows a you need to use keys() instead of key() - Omer Tekbiyik
dict 作为变量名是相当不幸的,因为 dict 是一种类型名称。 - Kuchara
5个回答

24
使用dict.items()
你可以使用dict.items()(对于Python 2,使用dict.iteritems()),它返回键值对,你可以简单地选择第一个。
>>> 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类型。但实际上,在字典中的值是一个int类型。
免责声明:如果字典有多个键值对,这些方法将选择第一个键值对,并忽略其它键值对。如果字典为空,则无法使用此方法。如果您需要一种解决方案,当字典中有多个值时会失败,则应查看@SylvainLeroux's answer

9
为了在不导入任何内容的情况下使用具有多个键的字典解决方案,我使用了以下简单的解决方案。
dict={'a':'b','c':'d'}

keys = "".join(list(dict.keys()))
values = "".join(list(dict.values()))

7
>>> d = { 'a': 'b' }
>>> d.items()
dict_items([('a', 'b')])

此时,您可以使用解构赋值来获取您的值:

>>> [[key, value]] = d.items()
>>> key
'a'
>>> value
'b'

这个解决方案的一个优点是,如果d包含多个条目,它将会失败,而不是默默忽略这个问题

>>> d = { 'a': 'b', 'c':'d' }
>>> [[key, value]] = d.items()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 1)

最后,如果你需要确保 keyvalue 是字符串类型,你可以添加一个列表推导式:

>>> d = { 1: 2 }
>>> [[key, value]] = ((str(key), str(value)) for key,value in d.items())
>>> key
'1'
>>> value
'2'

不错!关键字:解构赋值 - PatrickT

4

制作键和值的列表:

dict={'a':'b'}

keys = list(dict.keys())
values = list(dict.values())

然后创建变量:

key = keys[0]
value = values[0]

2
你需要的方法是keys()values()。"keys()"返回一个包含字典中所有键的列表,"values()"返回一个包含字典中所有值的列表。更多信息请参考最初的回答

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接