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

时间:2010-08-23 07:01:33

标签: python dictionary key

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

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

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

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

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

get(key[, default])

14 个答案:

答案 0 :(得分:214)

你应该用以下代码迭代键:

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

答案 1 :(得分:85)

如果要打印键和值,请使用以下命令:

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

答案 2 :(得分:77)

  

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

根据上述要求,我建议这样做:

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

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

答案 3 :(得分:37)

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

d = {'age':24}

然后你可以得到

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

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

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

答案 4 :(得分:11)

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

答案 5 :(得分:9)

就这么简单:

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

您将修改字典并首先复制字典

答案 6 :(得分:5)

迭代字典(i)将返回密钥,然后使用它(i)获取值

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

答案 7 :(得分:3)

对于python 3 如果你只想获得密钥使用它。如果需要值,请用打印(值)替换打印(键)。

for key,value in my_dict:
  print(key)

答案 8 :(得分:3)

我有时会做的是创建另一个字典,以便能够以我认为需要访问的字符串。然后我迭代匹配键的多个词典来构建例如第一列作为描述的表。

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])

您可以轻松地为大量字典匹配数据(我喜欢使用字典,您可以始终引用众所周知的关键名称)

是的,我使用词典来存储函数的结果,因此每次调用它们时我都不需要运行这些函数,然后随时访问结果。

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

答案 9 :(得分:3)

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

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

答案 10 :(得分:0)

您可以通过将字典键和值强制转换为列表来执行此操作。也可以为物品完成。

示例:

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'

答案 11 :(得分:0)

下面的这段代码是创建指向经理玩家点的地图。目的是将“玩家”一词与序列号连接起来。

players_numbers = int(input('How many girls will play? ')) #First - input receive a input about how many people will play

players = {}  
counter = 1

for _ in range(players_numbers): #sum one, for the loop reach the correct number
    player_dict = {f'player{counter}': 0} #concatenate the word player with the player number. the initial point is 0.
    players.update(player_dict) #update the dictionary with every player
    counter = counter + 1
    print(players)

输出>>> {'player1': 0, 'player2': 0, 'player3': 0}...

答案 12 :(得分:0)

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

os_type = {'ubuntu': '20.04'}

使用popitem()方法:

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

答案 13 :(得分:-2)

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

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

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

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'}

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