如果有字典:
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
任何简单的解决方案?谢谢!
答案 0 :(得分:3)
使用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'>
现在,key
和value
均为str
。尽管dict的实际值是int
。
免责声明:如果字典具有多个键值对,这些方法将选择第一个键,字典的值对,而忽略其他键。如果字典为空,它将不起作用。如果您需要一种在字典中存在多个值而导致失败的解决方案,则@SylvainLeroux's answer是您应该寻找的解决方案。
答案 1 :(得分:2)
要使用不带任何导入的dict中有多个键的解决方案,我使用了以下简便解决方案。
dict={'a':'b','c':'d'}
keys = "".join(list(dict.keys()))
values = "".join(list(dict.values()))
答案 2 :(得分:1)
https://docs.python.org/3/library/stdtypes.html#typesmapping
的方法是你正在寻找的keys()
和values()
。
答案 3 :(得分:1)
列出键和值的列表:
dict={'a':'b'}
keys = list(dict.keys())
values = list(dict.values())
然后创建变量:
key = keys[0]
value = values[0]
答案 4 :(得分:1)
>>> d = { 'a': 'b' }
>>> d.items()
dict_items([('a', 'b')])
此时,您可以使用解构分配来获取值:
>>> [[key, value]] = d.items()
>>> key
'a'
>>> value
'b'
此解决方案的一个优势是它将fail in case of d
containing several entries, instead of silently ignoring the issue。
>>> 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)
最后,如果您需要确保key
和value
为字符串,则可以添加列表理解:
>>> d = { 1: 2 }
>>> [[key, value]] = ((str(key), str(value)) for key,value in d.items())
>>> key
'1'
>>> value
'2'