如何在 Python 中直接获取字典键作为变量(而不是通过从值中搜索)?

Posted

技术标签:

【中文标题】如何在 Python 中直接获取字典键作为变量(而不是通过从值中搜索)?【英文标题】:How can I get dictionary key as variable directly in Python (not by searching from value)? 【发布时间】:2011-04-02 11:59:56 【问题描述】:

很抱歉这个基本问题,但我对此的搜索除了如何根据字典的值获取字典的键之外没有其他任何东西,我不想使用它,因为我只想要键的文本/名称并且我担心如果字典有很多条目,按值搜索最终可能会返回 2 个或更多键......我想做的是:

mydictionary='keyname':'somevalue'
for current in mydictionary:

   result = mydictionary.(some_function_to_get_key_name)[current]
   print result
   "keyname"

这样做的原因是我将它们打印到文档中,并且我想使用键名和值来执行此操作

我看过下面的方法,但这似乎只是返回键的值

get(key[, default])

【问题讨论】:

您是否只想检查字典中是否存在“keyname”?因为你确实已经拥有它了。 不是我说的,需要打印出来,它会遍历大量的键 current是当前密钥,只需执行print current 你如何得到字典中的第一个键? (无迭代) 【参考方案1】:

如果你有类似的字典

d = 'age':24

那么你可以通过d.popitem()获取key和value

key, value = d.popitem()

【讨论】:

【参考方案2】:
names=[key for key, value in mydictionary.items()]

【讨论】:

【参考方案3】:

如果您只需要从简单的字典中获取键值,例如:

os_type = 'ubuntu': '20.04'

使用popitem()方法:

os, version = os_type.popitem()
print(os) # 'ubuntu'
print(version) # '20.04'

【讨论】:

【参考方案4】:

如果您想同时访问键和值,请使用以下命令:

Python 2:

for key, value in my_dict.iteritems():
    print(key, value)

Python 3:

for key, value in my_dict.items():
    print(key, value)

【讨论】:

对于 Python 3:items() 而不是 iteritems()【参考方案5】:

您可以通过将 dict 键和值强制转换为列表来做到这一点。也可以对物品进行。

例子:

f = 'one': 'police', 'two': 'oranges', 'three': 'car'
list(f.keys())[0] = 'one'
list(f.keys())[1] = 'two'

list(f.values())[0] = 'police'
list(f.values())[1] = 'oranges'

【讨论】:

【参考方案6】:

轻松更改键和值的位置,然后使用值获取键, 字典中的键可以具有相同的值,但它们(键)应该不同。 例如,如果您有一个列表,并且它的第一个值是您的问题的关键,而其他值是第一个值的规格:

list1=["Name",'ID=13736','Phone:1313','Dep:pyhton']

您可以通过此循环在字典中轻松保存和使用数据:

data_dict=
for i in range(1, len(list1)):
     data_dict[list1[i]]=list1[0]
print(data_dict)
'ID=13736': 'Name', 'Phone:1313': 'Name', 'Dep:pyhton': 'Name'

然后您可以根据任何输入值找到键(名称)。

【讨论】:

【参考方案7】:

就这么简单:

mydictionary='keyname':'somevalue'
result = mydictionary.popitem()[0]

您将修改您的词典,并应先复制一份

【讨论】:

【参考方案8】:

您可以简单地使用 * 解压缩字典键。示例:

d = 'x': 1, 'y': 2
t = (*d,)
print(t) # ('x', 'y')

【讨论】:

python34: SyntaxError: can use stared expression only as assignment target dang,我使用 python34,因为我无法在我的 Windows 测试环境中运行任何更新的东西。【参考方案9】:

如果字典包含一对这样的:

d = 'age':24

那么你可以得到 ​​p>

field, value = d.items()[0]

对于 Python 3.5,执行以下操作:

key = list(d.keys())[0]

【讨论】:

Python3.5: TypeError: 'dict_items' object does not support indexing 相当老套,但 d.__iter__().__next__() 可以解决问题。你得到“年龄”。使用此 d.items().__iter__().__next__()[0],您会得到相同的结果。 在 Python3 中,这适用于一对字典:key = list(d.keys())[0] 如果你有一个巨大的字典,使用next()更好根据:***.com/a/27638751/1488445【参考方案10】:

我有时会创建另一个字典,以便能够以字符串的形式访问我认为需要的任何内容。然后我遍历多个匹配键的字典来构建例如以第一列作为描述的表格。

dict_names = 'key1': 'Text 1', 'key2': 'Text 2'
dict_values = 'key1': 0, 'key2': 1 

for key, value in dict_names.items():
    print('0 1'.format(dict_names[key], dict_values[key])

您可以轻松地使用大量字典来匹配数据(我喜欢这样一个事实,即使用字典您总是可以引用众所周知的键名)

是的,我使用字典来存储函数的结果,所以我不需要每次只调用一次就运行这些函数,然后随时访问结果。

编辑:在我的示例中,键名并不重要(我个人喜欢使用相同的键名,因为从我的任何匹配字典中选择单个值更容易),只需确保中的键数每个字典都是一样的

【讨论】:

【参考方案11】:

对于python 3 如果您只想获取密钥,请使用它。如果需要值,请将 print(key) 替换为 print(values)。

for key,value in my_dict:
  print(key)

【讨论】:

【参考方案12】:

您应该使用以下方法迭代键:

for key in mydictionary:
   print "key: %s , value: %s" % (key, mydictionary[key])

【讨论】:

你可以写for key in mydictionary: 在 python 3.6 中:print (f"key: key, value: mydictionary[key]")【参考方案13】:

遍历字典 (i) 将返回键,然后使用它 (i) 获取值

for i in D:
    print "key: %s, value: %s" % (i, D[i])

【讨论】:

【参考方案14】:

keys=[i for i in mydictionary.keys()]keys = list(mydictionary.keys())

【讨论】:

请务必使用代码标签并解释您的答案。【参考方案15】:

这样做的原因是我将它们打印到文档中,并且我想使用键名和值来执行此操作

基于上述要求,我的建议是:

keys = mydictionary.keys()
keys.sort()

for each in keys:
    print "%s: %s" % (each, mydictionary.get(each))

【讨论】:

我更喜欢其他答案,例如 my_dict.item() 上的 for 循环或 keys = list(my_dict.keys) 之类的列表理解,但以防万一有人想在 Python 3 中执行此操作:(第 2 行)keys = sorted(my_dict.keys()) + 添加() 打印。

以上是关于如何在 Python 中直接获取字典键作为变量(而不是通过从值中搜索)?的主要内容,如果未能解决你的问题,请参考以下文章

字典的学习

如何在Python中将json.loads作为列表而不是字典[重复]

Java中的Hashtable如何根据值获取键?

使用未定义的变量作为python中的字典键

如何使用动态变量作为在 python 中检索表值的键?

Python字典键值对的添加和遍历