Python 在不知道其关键字名称的情况下解包字典
如果我有一些字典,比如:Python 在不知道其关键字名称的情况下解包字典,python,dictionary,unpack,Python,Dictionary,Unpack,如果我有一些字典,比如: d = {'keyname': ['foo', 'bar']} 我不知道密钥名,我如何将这个dict解包成两个变量 这不起作用: k,v = d 我可以重复这句话,比如: for k, v in d.items(): # k and v are now available 但我认为这还不够“蟒蛇式”的方式 如何在不使用for循环的情况下执行此操作 “d”始终只能有一个键:val对。在Python中2.x 如果您的词典的长度始终为1,则这可能是一种可行的解决
d = {'keyname': ['foo', 'bar']}
我不知道密钥名,我如何将这个dict解包成两个变量
这不起作用:
k,v = d
我可以重复这句话,比如:
for k, v in d.items():
# k and v are now available
但我认为这还不够“蟒蛇式”的方式
如何在不使用for循环的情况下执行此操作
“d”
始终只能有一个键:val
对。在Python中2.x
如果您的词典
的长度始终为1,则这可能是一种可行的解决方案:
>>> d = {'keyname': ['foo', 'bar']}
>>> k, v = d.keys()[0], d.values()[0]
>>> k
'keyname'
>>> v
['foo', 'bar']
对于Python2.x和3.x
使用.items()
对于python3.x
>>> d = {'keyname': ['foo', 'bar']}
>>> k, v = tuple(d.keys())[0], tuple(d.values())[0]
>>> k
'keyname'
>>> v
['foo', 'bar']
在Python中2.x 如果您的
词典
的长度始终为1,则这可能是一种可行的解决方案:
>>> d = {'keyname': ['foo', 'bar']}
>>> k, v = d.keys()[0], d.values()[0]
>>> k
'keyname'
>>> v
['foo', 'bar']
对于Python2.x和3.x
使用.items()
对于python3.x
>>> d = {'keyname': ['foo', 'bar']}
>>> k, v = tuple(d.keys())[0], tuple(d.values())[0]
>>> k
'keyname'
>>> v
['foo', 'bar']
您可以使用iterable解包:
>>> d = {'keyname': ['foo', 'bar']}
>>> [(k, v)] = d.items()
>>> k
'keyname'
>>> v
['foo', 'bar']
>>>
这在Python2.x和Python3.x中都适用
但是请注意,如果您使用的是Python2.x,使用d.iteritems()
而不是d.items()
,效率会稍微高一些:
这是因为
iteritems
返回迭代器,而items
生成不必要的列表。您可以使用iterable解包:
>>> d = {'keyname': ['foo', 'bar']}
>>> [(k, v)] = d.items()
>>> k
'keyname'
>>> v
['foo', 'bar']
>>>
这在Python2.x和Python3.x中都适用
但是请注意,如果您使用的是Python2.x,使用d.iteritems()
而不是d.items()
,效率会稍微高一些:
这是因为
iteritems
返回迭代器,而items
生成不必要的列表。d={'keyname':['foo','bar']}
对于k in d.keys():
键=k
val = d[k]
print key, val
d={'keyname':['foo','bar']} 对于k in d.keys(): 键=k
val = d[k]
print key, val
这不适用于Python 3!我应该提到,它必须在Python下工作3@user2624744感谢您提醒我们Python3中的
.keys()
和.values()
更新。这不适用于Python3!我应该提到,它必须在Python下工作3@user2624744感谢您提醒我们python 3中的.keys()
和.values()
更新。必须使用python 3!必须使用Python 3!