Chu*_*aka 8 python string dictionary
如果有字典:
dict={'a':'b'}
Run Code Online (Sandbox Code Playgroud)
在python 3中,我想将此字典键转换为字符串并将其值转换为另一个字符串:
print(key)
key='a'
print(type(key))
str
print(value)
value='a'
print(type(value))
str
Run Code Online (Sandbox Code Playgroud)
一些尝试:
str(dict.key()) # returns 'dict' object has no attribute 'key'
json.dump(dict) # returns {'a':'b'} in string, but hard to process
Run Code Online (Sandbox Code Playgroud)
有什么简单的解决办法吗?谢谢!
Muh*_*mad 15
使用dict.items():
您可以使用dict.items()( dict.iteritems()for python 2),它返回键和值对,您可以简单地选择它的第一个。
>>> d = { 'a': 'b' }
>>> key, value = list(d.items())[0]
>>> key
'a'
>>> value
'b'
Run Code Online (Sandbox Code Playgroud)
我转换d.items()为一个列表,并选择了它的0索引,你也可以将它转换为一个迭代器,并使用next以下方法选择它的第一个:
>>> key, value = next(iter(d.items()))
>>> key
'a'
>>> value
'b'
Run Code Online (Sandbox Code Playgroud)
您还可以使用dict.keys()检索所有字典键,并选择其第一个键。并用于dict.values()检索所有字典值:
>>> key = list(d.keys())[0]
>>> key
'a'
>>> value = list(d.values())[0]
>>> value
'b'
Run Code Online (Sandbox Code Playgroud)
在这里,您也可以使用next(iter(...)):
>>> key = next(iter(d.keys()))
>>> key
'a'
>>> value = next(iter(d.values()))
'b'
Run Code Online (Sandbox Code Playgroud)
确保获得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'>
Run Code Online (Sandbox Code Playgroud)
现在,key和value都是str。尽管 dict 中的实际值是一个int.
免责声明:如果字典有多个键值对,这些方法将选择第一个键、值对,而忽略其他。如果字典为空,它将不起作用。如果您需要的解决方案在字典中有多个值时只会失败,@SylvainLeroux 的答案就是您应该寻找的答案。
为了获得一个在 dict 中包含多个键而无需任何导入的解决方案,我使用了以下轻型解决方案。
dict={'a':'b','c':'d'}
keys = "".join(list(dict.keys()))
values = "".join(list(dict.values()))
Run Code Online (Sandbox Code Playgroud)
>>> d = { 'a': 'b' }
>>> d.items()
dict_items([('a', 'b')])
Run Code Online (Sandbox Code Playgroud)
此时,您可以使用解构赋值来获取您的值:
>>> [[key, value]] = d.items()
>>> key
'a'
>>> value
'b'
Run Code Online (Sandbox Code Playgroud)
该解决方案的一个优点是,如果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)
Run Code Online (Sandbox Code Playgroud)
最后,如果您需要确保key和value是字符串,您可以添加列表理解:
>>> d = { 1: 2 }
>>> [[key, value]] = ((str(key), str(value)) for key,value in d.items())
>>> key
'1'
>>> value
'2'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65469 次 |
| 最近记录: |